我是Swing的新手,我对这个启动基于教程项目的 Swing 应用程序的主类有以下疑问:
package com.caveofprogramming.designpatterns.demo1;
import javax.swing.SwingUtilities;
import com.caveofprogramming.designpatterns.demo1.controller.Controller;
import com.caveofprogramming.designpatterns.demo1.model.Model;
import com.caveofprogramming.designpatterns.demo1.view.View;
public class Application {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
runApp();
}
});
}
public static void runApp() {
Model model = new Model();
View view = new View(model);
Controller controller = new Controller(view, model);
}
}
因此,此类包含main()方法,该方法是应用程序启动时执行的方法。
它执行SwingUtilities.invokeLater()方法,该方法创建一个包含run()方法的Runnable对象,该方法本身执行作为我的 Swing 应用程序入口点的runApp()方法。
我的疑问与SwingUtilities.invokeLater()方法的确切作用有关。究竟是做什么的?作为invokeLater()方法的参数创建的Runnable对象是什么?在我看来,它是一个自动实现Runnable接口的对象,但我不确定,我也不清楚为什么要这样做。
你能帮我理解这个简单的 Swing 应用程序的架构是如何工作的吗?