java - 请解释以下代码的作用?

标签 java swing concurrency runnable

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        new NewJFrame().setVisible(true);
    }
});

请告诉我上面的代码实际上做了什么。我正在寻找逐行解释。尤其是第一行,告诉我为什么要使用它,以及在什么情况下我们必须使用它。

最佳答案

在此示例中,您将看到一个派生自 Runnable 的任意类。这个匿名类覆盖了接口(interface) runnable 的 run 方法。然后这个匿名类被实例化并传递给 EventQueue.invokeLater 方法,这是一个静态方法。此方法将对象追加到...嗯...eventQueue。 EvenQueue 中有许多事件,例如键盘事件或鼠标事件或其他事件。有一个线程不断从这个队列中轮询数据。一旦该线程到达此处实例化的匿名类,它将执行 run() 方法,该方法将实例化类 NewJFrame 的对象并将其设置为可见。

这样做的关键在于 new JFrame().setVisible(true) 部分不是在主线程中执行,而是在事件调度线程中执行。在 Swing 中,您必须在事件调度线程中执行所有修改用户界面的代码。

关于java - 请解释以下代码的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4908824/

相关文章:

java - JEdi​​torPane 无法接受 Google 搜索查询,为什么?

python - 如何加速批量文件的读取

(int)Math.pow(2,x) 和 1<<x 的 Java 结果不同

java - 包含 && 的命令行参数

java - 如何实现 ActionListener 以使退出按钮起作用

java - JXTable 和滚动条上方的标题单元格

multithreading - Haskell 多线程有多难?

java - 使用并发 HashMap 的同步块(synchronized block)是否正确?

java - Selenium Java,如何获得包含双引号的第二个文本?

java - 当节点的父节点发生转换时拖动节点会导致节点消失