为了打开模式对话框,您需要传递父窗口,并将对话框的必要标志传递给模态.
根据您在eclipse基础架构中的位置,找到这个父窗口并不总是那么容易.
如何访问父窗口?
上一个答案中的代码片段将起作用.但是,请记住,您只能从UI线程打开对话框.如果要从其他线程打开对话框,例如后台进程,则需要执行以下操作:
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
});
否则,在创建对话框时会出现异常.
从视图或编辑器(这部分很容易):
this.getSite().getWorkbenchWindow().getShell()
从其他地方访问视图或编辑器,如上所述.
如果你发现自己在一个无法访问视图或编辑器的类中,你可能不希望调用任何UI代码,但是如果你真的想要自己开枪:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()