EventQueue.invokeLater()は、Java Swingコンポーネントをスレッドセーフにするための関数であることを理解しています。 また、この関数の引数は、Runnableを実装したオブジェクトであることがわかります。 は、しかし、私はこの関数呼び出しの構文を理解することができません、すなわち、この呼び出し -Java.awt.EventQueue.invokeLater():構文を理解できません
ここEventQueue.invokeLater(()-> {
new Screen();
});
、画面は()のJFrameを拡張するクラスです。
public class Screen extends JFrame
{
Screen()
{
setSize(1000, 1000);
JPanel j1 = new Board();
j1.setBounds(0,0,500, 500);
JPanel j2 = new DiceModel();
j2.setBounds(500, 0, 500, 500);
add(j1);
add(j2);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(()-> {
new Screen();
});
}
}
このコードは期待どおりに動作します。 ボードとDiceModelはJPanelを拡張するために定義した2つのクラスです。
呼び出し
画面がタイプのRunnableの対象ではないことを予想されるエラーを示します。
私の質問は、invokeLater()の関数呼び出しの構文の意味は何ですか? Javaのような無名関数呼び出しですか?
これは*ラムダ関数*です。質問はおそらく重複していますが、ターゲットを見つけることができません。 – chrylis
ありがとう!私はそのような種類の投稿を探していたが、見つけられなかった。だから私は自分自身で質問した。今_λ関数_を見上げます。 – julianff
Java 8以降では、ラムダ式を使用して1つのメソッドでインターフェースのオブジェクトを作成できます。インタフェース 'Runnable'はメソッド' run'を1つ持っているので、関数インタフェースであり、ラムダ式として使用することができます –