当屏幕上已经有一个对话框时,如何避免显示一个对话框?
详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程都将显示一个 JDialog(通过 swingx.JXErrorPane.showDialog()),这是不需要的。即使我取消所有正在运行的计时器,仍然会同时出现一些对话框。我怎样才能做到只会出现一个对话框?
我试图使调用 showDialog() 的方法同步,这导致我的整个 GUI 被阻塞。使用标志也不起作用。
当屏幕上已经有一个对话框时,如何避免显示一个对话框?
详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程都将显示一个 JDialog(通过 swingx.JXErrorPane.showDialog()),这是不需要的。即使我取消所有正在运行的计时器,仍然会同时出现一些对话框。我怎样才能做到只会出现一个对话框?
我试图使调用 showDialog() 的方法同步,这导致我的整个 GUI 被阻塞。使用标志也不起作用。
将对话框变成观察者并将错误事件发布到这个新的观察者(参见观察者设计模式)。当事件发生时,对话框应该显示自己(以主框架作为父框架)。在对话框的表格中显示最近的错误。将新错误添加到该表的底部。
另一种选择是在主框架的表格中显示错误。将表格放入 JSplitPane 中,以便用户可以将其最小化。
另一种选择是将对话框变成单例:
其中 MyDialog 应该是对话窗口类的名称。
然后每次您需要显示对话框时,您只需引用单例:
MyDialog.getInstance().showDialog();
showDialog 只是使对话框窗口可见。