アクションリスナー内で呼び出し元コンポーネントの区別を行うには次のように書く。
class SomeClass implements ActionListener{
public void actionPerformed(ActionEvent e) {
if (e.getSource() == component1) {
//何らかの処理
}
if (e.getSource() == component2) {
//何らかの処理
}
}
}
後、リスナーは内部クラスを作った方が書きやすいかも(各コンポーネントの宣言自体はprivateなグローバル変数として宣言しちゃって)
ActionListenerの実装方法について簡単にまとめると、
1.あるクラスがActionListenerをimplementsして、そのクラス内にあるコンポーネントが
コンポーネント名.addActionListener(this);として登録する方法。
2.特定のクラスにActionListenerの実装を任せて、あるクラス内にあるコンポーネントが
コンポーネント名.addActionListener(new 特定のクラス());とする方法。
3.
ActionLister aec = new ActionLister() {
public void actionPerformed(ActionEvent e) {
}
};
と匿名クラスにしてしまう方法。
最終更新:2015年12月28日 22:46