3

我有一个 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 线程崩溃的情况下。

如何检查我的 UI 是否已创建,如果尚未创建,我仍想向用户显示消息框。

谢谢。

4

1 回答 1

4

MessageBox 的第一个参数是周围的外壳。

您必须定义一个显示器,并在显示器内定义一个外壳,以显示消息框。

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 和 Shell -

    Display display = Display.getCurrent();
    if (display != null) {
        Shell[] shells = display.getShells();
    }
于 2012-09-17T14:02:33.540 回答