1

我有以下示例代码:

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 会继续更新。

所以我的问题是这是如何工作的?

4

0 回答 0