優れた解決策は、関数型プログラミング言語で可能なように、単一のクラスを持ち、メソッドをパラメーターとして渡すことです。今のところこれは不可能ですが、Java 8 のラムダ式に期待してください。たとえば、次のようなことが可能になります。
public class MyButton implements ActionListener {
private ActionListener handler;
public MyButton(ActionListener lambda) {
handler = lambda;
}
@Override
public void actionPerformed(ActionEvent event) {
handler(event);
}
}
そして、次のような新しいボタンを作成できます。
MyButton but1 = new MyButton(e -> /* do something */);
MyButton but2 = new MyButton(e -> /* do something else */);
同様に、アクション リスナーを既存の に直接追加することも可能JButton
です。
button.addActionListener(e -> /* do something */);
@Basilio German の回答に示されているように、より詳細ですが、現在利用可能なオプションは、アクションリスナーを匿名クラスパラメーターとして渡し、関連するメソッドをオーバーライドすることです。