我如何可以避免,这一对话显示,当时那里已经是一个在屏幕上?

详细信息:在我的许多应用程序的计时器是运行。如果一个致命的错误发生,所有受影响的螺纹会显示一个JDialog(由swingx.JXErrorPane.showDialog()),这是不是需要的。甚至如果我取消所有正在运行的计时器,还有些对话会出现在同一时间。我如何可以实现的,将只有出现一个对话?

我试着让方法,其中要求showDialog()同步,其结果在我的整个GUI被阻止。使用的一个标志没有工作。

有帮助吗?

解决方案

将对话框转换为观察者并将错误事件发布给此新观察者(请参阅观察者设计模式) )。当事件发生时,对话框应显示自身(主框架为父框架)。在对话框中的表中显示最近的错误。将新错误添加到该表的底部。

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

其他提示

还有另一个选择将是把对话变成一个单一实例:

  • 给对话一个私人的构造。
  • 创建一个"私人静MyDialog实例;"属性的对话课。
  • 创建一个"公共静MyDialog getInstance(){...};-方法实例,第一个实例,如果它是空。

在MyDialog应名称的对话窗口的类。

然后每次需要证明的话你只是指单独:

MyDialog.getInstance().showDialog();

在showDialog只会使该对话的窗口可见。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top