JFace的MessageDialog在open()方法中失败

时间:2016-03-09 15:44:39

标签: java jface

我有一个JFace应用程序,想在启动时做一些工作。所以我超越了窗户的开放方法 但是现在我遇到的问题是,在发生故障的情况下,我无法显示错误消息,因为此时shell为空。我不知道要解决这个问题。

_('ManagementForm data is missing or has been tampered with'), code='missing_management_form',

1 个答案:

答案 0 :(得分:1)

我会尝试:

Display.getDefault().syncExec(new Runnable() {

    @Override
    public void run() {
         MessageDialog.openError(Display.getCurrent().getActiveShell(), "Error", "Message");
    }
});

EDIT:

静态方法Display.getDefault()返回默认显示线程,如果它尚不存在则会创建一个新线程。

另一方面,静态方法Display.getCurrent()从当前运行的线程返回Display实例,如果当前运行的线程不是任何用户界面线程,则返回null显示。

有关Display class

的Java文档的更多信息,请参阅

您可能还想查看the difference between syncExec() and asyncExec()