gpt4 book ai didi

java - getActiveWorkbenchWindow 在 WorkbenchAdvisor.openWindows() 中返回 null

转载 作者:行者123 更新时间:2023-11-29 05:01:35 24 4
gpt4 key购买 nike

我的 WorkbenchAdvisor 子类的 openWindows() 覆盖中有以下代码:

public class MyWorkbenchAdvisor extends WorkbenchAdvisor {
...
@Override
public boolean openWindows() {
super.openWindows();
PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
@Override
public void run() {
IWorkbenchWindow win =
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
});
}
}

当我调试代码时,我发现在调用 getActiveWorkbenchWindow() 之后,winnull。我确实注意到,通过使用 asyncExec 而不是 syncExec,我可以让 win 正确初始化。但是,我确实相信在我的特定上下文中我需要 syncExec

作为旁注,我也尝试过完全不使用 asyncExec/syncExec(也就是调用 getActiveWorkbenchWindow()直接在 openWindows() 方法中),但无济于事。

感谢帮助。谢谢。

最佳答案

是否可以使用 postStartup() 而不是 openWindows()?在 postStartup() win 中不会是 null

openWindows() 被调用得太早没有 Activity 的工作台,你使用 asyncExec() 获得 Activity 窗口的原因是因为它被延迟执行。这将是非常有问题的代码,因为不能保证 Activity 工作台已准备就绪,因此 win 在一次启动时可能是 null 而不是 null 在另一个。

关于java - getActiveWorkbenchWindow 在 WorkbenchAdvisor.openWindows() 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com