我有一个Java SWT应用程序,我正在使用这段代码来显示一个消息框。
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
try {
MessageBox objError = new MessageBox(SysTray.shell, SWT.ICON_ERROR);
objError.setMessage(strMessage);
objError.open();
SysTray.shell.getDisplay().dispose();
System.exit(1);
} catch (Exception e) {
e.printStackTrace(); // Nothing to be handled here.
}
}
});
当我的SWT UI未创建时,这段代码无法执行,因此该块不会运行。这种情况发生在我的UI线程崩溃的情况下。
如何检查我的用户界面是否已经创建,如果不是,我还是要向用户显示消息框。
感谢。
答案 0 :(得分:4)
MessageBox的第一个参数是周围的shell。
您必须在人机界面中定义一个显示和一个外壳,以显示消息框。
Display display = new Display();
Shell shell = new Shell(display);
// Define message box
shell.open();
while (!shell.isDisposed()) {
if (display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
编辑添加并回答评论:
确定是否存在显示和外壳 -
Display display = Display.getCurrent();
if (display != null) {
Shell[] shells = display.getShells();
}