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

räp*_*äph 2 java swing multithreading modal-dialog

如果屏幕上已有对话框,我该如何避免显示对话框?

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

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

Aar*_*lla 6

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

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