- 締切済み
addActionListenerについて
ボタンbtn1をクリックした時の処理をさせたいと思っています。 そこで、addActionListenerを使って新しくクラスを作っています。 そこでe.getSouce()==btn1とすればbtn1が押された時の処理が通ると思ったのですが、 System.out.println()で確認してもどうも処理が通っていません。 コンストラクタ内でbtn1.addActionListenerとすればうまくいきましたが、 クラスごとに分けていきたいのであまりそういうことはしたくありません。 新しくクラスを作る方法でも出来ると思ったのですが、このソースでは何が原因で動かないのでしょうか? import java.awt.*; import java.awt.event.*; public class click2 extends Frame{ public static void main(String args[]){ click2 myfra=new click2(); myfra.show(); } Button btn1=new Button("start"); click2(){ setSize(300,200); setBackground(Color.white); setLayout(null); btn1.setBounds(50,70,40,20); add(btn1); } class Listener implements ActionListener{ public void actionPerformed(ActionEvent e){ if(e.getSource() == btn1){ System.out.println("btn1"); } } } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- shige_70
- ベストアンサー率17% (168/946)
> コンストラクタ内でbtn1.addActionListenerとすればうまくいきましたが、 そもそも、これをしないのが原因です。 リスナを登録しなければリスナは呼ばれません。 > クラスごとに分けていきたいのであまりそういうことはしたくありません。 意味がよく分かりません。。。
お礼
失礼しました。解決しました。 コンストラクタ内に全てかいたらできましたが、 一行で宣言してクラスを作ってそこにアクションをかけばできました。 コンストラクタ内にアクションまで全部書いてると だらだらと長いわかりにくいソースになるので、 クラスごとに役割を持たせて簡潔に書きたかったんです。