私は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()メソッドが含まれています。
Swing アプリケーションのエントリポイントであるrunApp()メソッドを実行する run()メソッドを含むRunnableオブジェクトを作成するSwingUtilities.invokeLater()メソッドを実行します。
私の疑問は、SwingUtilities.invokeLater()メソッドが正確に何をするかに関連しています。正確には何ですか?そして、 invokeLater()メソッドのパラメーターとして作成されるRunnableオブジェクトは何ですか? Runnableインターフェースを自動的に実装するオブジェクトのように思えますが、それについてはよくわかりませんし、なぜそれを行う必要があるのか も明確ではありません。
この単純な Swing アプリケーションのアーキテクチャが正確にどのように機能するかを理解するのを手伝ってくれませんか?