私はJava Swingを勉強していますが、読んでいるこの簡単なコードチュートリアルに関連して疑問があります:
package com.andrea.execute;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
/* An istance of a SimpleExample class is a JFrame object: a top level container */
public class SimpleExample extends JFrame {
/* Create a new SimpleExample object (that is a JFrame object) and set some property */
public SimpleExample() {
setTitle("Simple example");
setSize(300, 200);
setLocationRelativeTo(null); // Center the window on the screen.
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SimpleExample ex = new SimpleExample();
ex.setVisible(true);
}
});
}
}
ロジックは非常に単純です。JFrame Swing クラスを継承するSimpleExampleクラスがあります。したがって、SimpleExampleはトップレベルのコンテナーになります。
このクラスにはmain()メソッドも含まれていますが、今では 2 つの疑問があります。
1) main() メソッドでこのコードを実行する理由:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SimpleExample ex = new SimpleExample();
ex.setVisible(true);
}
});
SwingUtilities クラスでinvokeLater()メソッドを呼び出し、新しい Runnable オブジェクトを渡します。
私が知っているドキュメントを読むと、アプリケーションを Swing Event Queue に配置する方法になります。すべての UI 更新が同時実行セーフであることを確認するために使用されます。
理解するのに問題があるのは、それがどのように実装されているかです。
invokeLater()メソッドの入力パラメーター内で、次の「もの」を渡します。
new Runnable() {
@Override
public void run() {
SimpleExample ex = new SimpleExample();
ex.setVisible(true);
}
});
これは何ですか?何を表す?そしてそれはどのように機能しますか?
TNX
アンドレア