我有一个Wizard
有一个page
。在向导类的performFinish
方法中,我想关闭向导并运行另一个插件的对话框。
当我写下面的代码时,它没有关闭,只是不可见。
getShell().setVisible(false);
当我getShell().close()
或dialog.close()
或wizard.dispose()
时,对话框未显示。我该怎么办?
对话框在另一个插件中打开,代码如下。
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow win =wb.getActiveWorkbenchWindow();
CreateDialog UD = new CreateDialog(win.getShell());
UD.open();
答案 0 :(得分:0)
如果希望在新对话框打开之前关闭向导,则必须安排对话框异步运行。您可以使用Display.asyncExec
执行此操作。类似的东西:
@Override
public boolean performFinish()
{
... other work ...
Display.getCurrent().asyncExec(() ->
{
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow win =wb.getActiveWorkbenchWindow();
CreateDialog UD = new CreateDialog(win.getShell());
UD.open();
});
return true;
}
(这是Java 8,如果您使用的是早期的Java,请使用Runnable
)。
在向导关闭之后,asyncExec
块中的代码才会运行。