2

当屏幕上已经有一个对话框时,如何避免显示一个对话框?

详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程都将显示一个 JDialog(通过 swingx.JXErrorPane.showDialog()),这是不需要的。即使我取消所有正在运行的计时器,仍然会同时出现一些对话框。我怎样才能做到只会出现一个对话框?

我试图使调用 showDialog() 的方法同步,这导致我的整个 GUI 被阻塞。使用标志也不起作用。

4

2 回答 2

6

将对话框变成观察者并将错误事件发布到这个新的观察者(参见观察者设计模式)。当事件发生时,对话框应该显示自己(以主框架作为父框架)。在对话框的表格中显示最近的错误。将新错误添加到该表的底部。

另一种选择是在主框架的表格中显示错误。将表格放入 JSplitPane 中,以便用户可以将其最小化。

于 2009-04-30T07:24:23.720 回答
0

另一种选择是将对话框变成单例:

  • 给对话框一个私有构造函数。
  • 创建一个“私有静态 MyDialog 实例;” - 对话框类中的属性。
  • 创建一个“public static MyDialog getInstance() { ... }; - 返回实例的方法,如果它为空,则首先实例化它。

其中 MyDialog 应该是对话窗口类的名称。

然后每次您需要显示对话框时,您只需引用单例:

MyDialog.getInstance().showDialog();

showDialog 只是使对话框窗口可见。

于 2009-04-30T11:00:27.273 回答