SWT - MessageDialog - 贝壳

jkt*_*ter 1 java swt dialog

我有一个没有gui的操作类.该课程基本上是数据管理.从我的主GUI中的方法调用该类.我遇到的问题是如果出现故障则向用户显示消息.我正在使用MessageDialog,但它在运行时仍然失败.我认为问题出在壳牌上.当我尝试null用作shell时.

MessageDialog.openError(null, "Printer Error Message", "Error getting print reply file.");
Run Code Online (Sandbox Code Playgroud)

错误是空指针异常

MessageDialog.openError(Display.getCurrent().getActiveShell() etc
Run Code Online (Sandbox Code Playgroud)

错误是空指针异常

MessageDialog.openError(Display.getDefault().getActiveShell()
Run Code Online (Sandbox Code Playgroud)

错误是无效的线程访问

  1. 由于这不是GUI类,我是否必须从GUI父级传入shell?
  2. 我可以在类中创建一个shell然后使用它吗?

Bal*_*ick 6

您可以ERROR_THREAD_INVALID_ACCESS使用Display.syncExec或修复错误Display.asyncExec.试试:

Display.syncExec(new Runnable() {
    void run() {
        MessageDialog.openError(Display.getDefault().getActiveShell()...
    }
}
Run Code Online (Sandbox Code Playgroud)