Swing Event Thread Java

时间:2016-12-01 08:46:38

标签: java multithreading swing jframe event-dispatch-thread

在此代码中,HelloWorldApp只是扩展了JFrame。 为什么我不需要放置应用程序' invokeLater方法中的对象定义? 为什么' app'需要最终?感谢

final HelloWorldApp app = new HelloWorldApp();
SwingUtilities.invokeLater( new Runnable() 
{
    public void run() 
    {
        app.createAndShowGUI();
    }
});

1 个答案:

答案 0 :(得分:2)

  1. 所有对swing组件的UI状态的更改都必须在EDT(Event Dispatch Thread)中完成。因此,只要在构造函数HelloWorldApp()中没有创建UI组件或更改UI组件的状态,'app'的定义就可以在主线程中完成。

  2. 我认为没有理由将该类指定为final。在最新的教程中,它不再是最终的。请参阅Hello World tutorial