2016-12-01 6 views
0

は単にJFrameのを拡張します。 なぜ私はinvokeLaterメソッドに 'app'オブジェクト定義を入れる必要はありませんか? 「アプリ」は最終的に必要なのはなぜですか?おかげスイングイベントスレッドのJava

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

http://stackoverflow.com/questions/7423028/java-local-variable-visibility-in-anonymous-inner-classes-を参照してください。なぜなら最終的な鍵) – PeterMmm

答えて

2
  1. SwingコンポーネントのUI状態へのすべての変更は、EDT(イベントディスパッチスレッド)内で行われる必要があります。従って「アプリ」の定義は、UIコンポーネントを作成メインスレッドに限りコンストラクタHelloWorldApp()のdoesntで行わまたはUIコンポーネントの状態を変更することができます。

  2. は私が最終的としてクラスを指定するための理由を見ません。最新のチュートリアルでは、それはもはや最終的なものではありません。 Hello World tutorial

あなたは匿名の内部class`と[可視]( `についてお読みください
関連する問題