为了打开一个模态对话框,你需要传递一个父窗口,并传递必要的标志,以确保对话框是模态的。
根据你在Eclipse基础设施中所处的位置,找到这个父窗口并不总是容易的。
如何访问父窗口?
根据你在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()
虽然不完全是你想要做的,但在创建对话框时,你可能需要使用SWT.APPLICATION_MODAL、SWT.DIALOG_TRIM等来使其成为模态对话框(但也许这不是你问题的关键)。
请参阅链接以获取更多信息。