我正在使用 SwingUtilities.invokeLater 将模态对话框设置为在 SwingWorker 线程中可见。我希望 SwingWorker 线程等到对话框变得可见。做这个的最好方式是什么?我已将以下代码放入 SwingWorker 对象的 doInBackground() 方法中。
synchronized (myDialog) {
while (!myDialog.isVisible()) {
myDialog.wait();
}
}
在 MyDialog 类中被覆盖的 setVisible() 方法中:
public void setVisible(boolean enabled) {
synchronized (this) {
notifyAll();
}
super.setVisible(enabled);
}
但是,这似乎不起作用,因为存在时间问题 - notifyAll() 必须在 super.setVisible() 之前调用,因此 SwingWorker 线程可以处于等待状态。
我试图找出一个很好的方法来做到这一点,但我很沮丧!