繁体   English   中英

如何防止多个对话框同时出现?

[英]How to prevent multiple dialogs to appear at the same time?

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

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

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

将对话框变成观察者,并将错误事件发布到这个新的观察者(请参阅Observer Design Pattern )。 发生事件时,对话框应显示自己(以主框架为父框架)。 在对话框的表中显示最近的错误。 在该表的底部添加新的错误。

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

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

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

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

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

。MyDialog.getInstance()的ShowDialog();

其中showDialog仅使对话框窗口可见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM