Java 如何防止多个对话框同时出现?
当屏幕上已经有一个对话框时,如何避免显示该对话框 详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程都将显示一个JDialog(通过swingx.JXErrorPane.showDialog()),这是不需要的。即使我取消所有正在运行的计时器,仍然会同时出现一些对话框。我如何才能实现只出现一个对话框Java 如何防止多个对话框同时出现?,java,multithreading,swing,modal-dialog,Java,Multithreading,Swing,Modal Dialog,当屏幕上已经有一个对话框时,如何避免显示该对话框 详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程都将显示一个JDialog(通过swingx.JXErrorPane.showDialog()),这是不需要的。即使我取消所有正在运行的计时器,仍然会同时出现一些对话框。我如何才能实现只出现一个对话框 我试图使调用showDialog()的方法同步,这导致我的整个GUI被阻塞。使用标志也不起作用。将对话框转换为观察者,并将错误事件发布到此新观察者(请参阅)。当事件发
我试图使调用showDialog()的方法同步,这导致我的整个GUI被阻塞。使用标志也不起作用。将对话框转换为观察者,并将错误事件发布到此新观察者(请参阅)。当事件发生时,对话框应该显示自己(以主框架为父框架)。在对话框的表格中显示最近的错误。将新错误添加到该表的底部
另一个选项是在主框架的表格中显示错误。将表放入JSplitPane中,这样用户可以将其最小化。另一个选项是将对话框转换为单例:
- 给对话框一个私有构造函数
- 在对话框类中创建一个“私有静态MyDialog实例;”-属性
- 创建一个“publicstaticmydialog getInstance(){…};-方法来返回实例,如果它为null,则首先实例化它