Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止多个对话框同时出现?_Java_Multithreading_Swing_Modal Dialog - Fatal编程技术网

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

Java 如何防止多个对话框同时出现?,java,multithreading,swing,modal-dialog,Java,Multithreading,Swing,Modal Dialog,当屏幕上已经有一个对话框时,如何避免显示该对话框 详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程都将显示一个JDialog(通过swingx.JXErrorPane.showDialog()),这是不需要的。即使我取消所有正在运行的计时器,仍然会同时出现一些对话框。我如何才能实现只出现一个对话框 我试图使调用showDialog()的方法同步,这导致我的整个GUI被阻塞。使用标志也不起作用。将对话框转换为观察者,并将错误事件发布到此新观察者(请参阅)。当事件发

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

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


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

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


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

另一个选项是将对话框转换为单例:

  • 给对话框一个私有构造函数
  • 在对话框类中创建一个“私有静态MyDialog实例;”-属性
  • 创建一个“publicstaticmydialog getInstance(){…};-方法来返回实例,如果它为null,则首先实例化它
其中MyDialog应该是对话框窗口类的名称

然后,每次需要显示对话框时,只需参考单例:

MyDialog.getInstance().showDialog()

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