在此代码中,HelloWorldApp只是扩展了JFrame。
为什么我不需要将“ app”对象定义放入invokeLater方法中?
为什么“ app”必须是最终的?谢谢

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

最佳答案

对摆动组件的UI状态的所有更改都必须在EDT(事件调度线程)内完成。因此,只要在构造函数HelloWorldApp()中不创建UI组件或更改UI组件的状态,就可以在主线程中完成“ app”的定义。
我认为没有必要将类指定为final。在最新的教程中,它不再是最终的。见Hello World tutorial

07-26 02:48