我有一个没有gui的操作类。这个类基本上负责数据管理。这个类是从我的主GUI中的方法调用的。我遇到的问题是,如果发生故障,向用户显示消息。我正在使用MessageDialog,但它在运行时一直失败。我认为问题在于壳牌。当我尝试使用null作为shell时。
MessageDialog.openError(null, "Printer Error Message", "Error getting print reply file.");错误为空指针异常。
MessageDialog.openError(Display.getCurrent().getActiveShell() etc错误为空指针异常。
MessageDialog.openError(Display.getDefault().getActiveShell()错误是无效的线程访问。
发布于 2012-09-21 18:22:55
您可以使用ERROR_THREAD_INVALID_ACCESS或Display.asyncExec修复Display.syncExec错误。试着:
Display.syncExec(new Runnable() {
void run() {
MessageDialog.openError(Display.getDefault().getActiveShell()...
}
}发布于 2012-09-21 18:20:14
这能做你想做的事:
MessageDialog.openError(new Shell(), "Printer Error Message", "Error getting print reply file.");只需创建一个新的Shell并将其传递给MessageDialog。
发布于 2012-09-21 19:28:14
很少有重要的问题需要考虑。
Display.getDefault().asyncExec()或syncExce()Display.getDefault().getActiveShell(),首先将其传递给对话框,如果为null,则创建一个并传递它。https://stackoverflow.com/questions/12535696
复制相似问题