• 締切済み

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"); } } } }

みんなの回答

  • shige_70
  • ベストアンサー率17% (168/946)
回答No.1

> コンストラクタ内でbtn1.addActionListenerとすればうまくいきましたが、 そもそも、これをしないのが原因です。 リスナを登録しなければリスナは呼ばれません。 > クラスごとに分けていきたいのであまりそういうことはしたくありません。 意味がよく分かりません。。。

usui323
質問者

お礼

失礼しました。解決しました。 コンストラクタ内に全てかいたらできましたが、 一行で宣言してクラスを作ってそこにアクションをかけばできました。 コンストラクタ内にアクションまで全部書いてると だらだらと長いわかりにくいソースになるので、 クラスごとに役割を持たせて簡潔に書きたかったんです。

関連するQ&A

専門家に質問してみよう