为了打开模态对话框,您需要传递一个父窗口,并传递必要的标志以使对话框成为模态。
根据您在 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等,以使其成为模态对话框(但也许这不是您的问题所在)。
有关更多信息,请参阅此链接。