如果屏幕上已有对话框,我该如何避免显示对话框?
详细信息:在我的应用程序中,许多计时器正在运行。如果发生致命错误,所有受影响的线程将显示JDialog(通过swingx.JXErrorPane.showDialog()),这是不希望的。即使我取消所有正在运行的计时器,仍会有一些对话框同时出现。我怎样才能实现只出现一个对话框?
我试图使调用showDialog()的方法同步,这导致我的整个GUI被阻止。使用标志也不起作用。
答案 0 :(得分:6)
将对话框转换为观察者并将错误事件发布给此新观察者(请参阅Observer Design Pattern)。当事件发生时,对话框应显示自身(主框架为父框架)。在对话框中的表中显示最近的错误。将新错误添加到该表的底部。
另一种选择是在主框架中的表格中显示错误。将表放入JSplitPane,以便用户可以将其最小化。
答案 1 :(得分:0)
另一种选择是将对话框变为单身:
MyDialog应该是对话窗口类的名称。
然后每当你需要显示对话框时,你只需要参考单身:
MyDialog.getInstance()的ShowDialog();
showDialog只是使对话窗口可见。