0

我正在阅读一些关于 Java 中的事件调度线程的文章。因为它意味着 GUI 的创建和 GUI 组件的所有事件都应该在这个线程中执行。如果查看创建 JFrame 时在 net beans IDE 上生成的一些代码,我可以同意此评论的一部分。因为它包含一些将 GUI 创建定向到 EDT 的代码,例如java.awt.EventQueue.invokeLater(new Runnable().. ...

Ex:
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Temp().setVisible(true);
        }
    });
}

但是我们在事件处理方法上编写的表达式没有那种直接的语句。

Ex
private void btnTodayActionPerformed(java.awt.event.ActionEvent evt) {                                         
    xxxxxxxxxxxxxxxxx ;
    xxxxxxxxxxxxxxxxxxxxxxxxxxx;
} 

哪里是?还是编译器完成的??请好心帮助我..这将是一个愚蠢的问题......</p>

4

2 回答 2

1

顾名思义,所有的 UI 事件,包括点击事件,都是在事件调度线程上引发的。

事件分派线程实际上做的是运行一个操作系统级别的消息循环来通知 UI 事件,然后将这些事件分派给适当的 Swing 组件。

于 2013-06-27T15:35:41.780 回答
0

事件总是在 EDT 上引发,因此您为回调编写的任何代码也在 EDT 上,当您已经在使用不同的线程时(例如,不应在EDT,因为它们冻结了整个界面,而是应该在自己的线程上执行并定期使用 invokeLater 来更新界面)

于 2013-06-27T15:38:06.150 回答