我有以下示例代码:
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会继续更新。
所以我的问题是这是如何工作的?