我有以下示例代码:
public class MainWindow extends JFrame implements ActionListener {
public MainWindow() {
JButton openButton = new JButton('Open');
openButton.addActionListener(this);
add(openButton);
}
public void actionPerformed(ActionEvent e) {
// Create and show a modal dialog.
JDialog dialog = new JDialog(this, true);
dialog.setVisible(true);
}
}
当我单击openButton
它时,它会调用actionPerformed(ActionEvent e)
事件调度线程并dialog.setVisible(true)
阻止它。
但是对于更复杂的框架,我注意到它们仍然从非用户生成的事件(例如 Timer 操作)更新其 UI。
在我阻止 EDT 的任何其他情况下,我的 UI 会完全挂起,但是当dialog.setVisible(true)
阻止 EDT 时,所有者的 UI 会继续更新。
所以我的问题是这是如何工作的?