在此代码中 HelloWorldApp 只是扩展了 JFrame 。 为什么我不需要将“app”对象定义放入 invokeLater 方法中? 为什么“应用程序”需要是最终的?谢谢
final HelloWorldApp app = new HelloWorldApp();
SwingUtilities.invokeLater( new Runnable()
{
public void run()
{
app.createAndShowGUI();
}
});
最佳答案
对 swing 组件的 UI 状态的所有更改都必须在 EDT(事件调度线程)内完成。因此,只要在构造函数
HelloWorldApp()
中不创建 UI 组件或更改 UI 组件的状态,就可以在主线程中完成“app”的定义。我认为没有理由将该类指定为最终类。在最新的教程中,它不再是最终的。请参阅Hello World tutorial
关于java - Swing 事件线程 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906092/