すべてのActionListenerには、機能を実装:
public void actionPerformed(ActionEvent e) {
...//code that reacts to the action...
}
このコードは、ActionListenerを実装し、あなたが望むものは何でもするのactionPerformed機能を上書きする新しい匿名クラスを作成します。この機能を持つ新しいオブジェクトはActionListenerにの、fooの内部リストに追加されますのActionListenerのみ上書きする一つの機能を持っているので、コンパイラはどちらあなたを知っているよう
foo.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
...//code that reacts to the action...
}
});
は、このための速記は、ラムダ式を使用することです(詳細については、ラムダのドキュメントを参照してください)意味:
foo.addActionListener(
(e) -> {
...\code that reacts to the action...
}
);
アクションが発生した場合、fooはActionListenerのを通して方法を動作することは、それがリストされているオブジェクトを、それぞれ1上のactionPerformed()を呼び出します。各オブジェクトのバージョンの関数のコードが順番に実行されます。
ちなみに、actionPerformed()はSwingスレッドで実行され、ここでのパフォーマンスの低下は応答の遅いユーザーインターフェイスを意味するため、あまりにも多くの作業をactionPerformedで行わないことをお勧めします。アクションに応答して時間のかかるアクションを実行する必要がある場合は、この関数内で新しいスレッドを開始するか、単に既存のスレッドによって検出されるフラグを設定することを検討してください。
「これに他の表現がありますか?」とはどういう意味ですか? – user3437460
あなたはラムダ式とウェブ上の匿名のクラスを読む必要があります –