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

标签 java multithreading swing modal-dialog

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

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

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

最佳答案

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

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

关于java - 如何防止多个对话框同时出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805738/

相关文章:

java - 更改引用或返回引用

java - 执行增量线程后,变量始终相同

java - JCombobox 根据 true/false 调整文本

java - 从使用 GridLayout 设置的 JPanel 中删除最后一行

java - 我可以使用什么来代替 "this"作为传递参数?

java - 是否可以通过 Selenium RC 加载外部 javascript?

javascript - 如何仅缩放具有视口(viewport)元标记的响应式站点的桌面页面?

java - 持有两个对象的锁

c# - XamlReader.Load 在后台线程中。是否可以?

java - 带 JScrollPane 的嵌套面板