web-dev-qa-db-ja.com

JavaでJButtonにActionListenerを追加する方法

private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");

これらのボタンにアクションリスナーを追加するにはどうすればよいですか。メインメソッドからボタンでactionperformedを呼び出すことができます。クリックすると、プログラムで呼び出すことができますか?

26
user37037

二通り:

1。 クラスにActionListenerを実装し、jBtnSelection.addActionListener(this);を使用します。後で、menthod public void actionPerformed(ActionEvent e)を定義する必要があります。ただし、actionPerformedメソッドは各イベントのソース(e.getSource())をチェックして、どのボタンからのものかを確認する必要があるため、複数のボタンに対してこれを行うのは混乱を招く可能性があります。

2。 匿名の内部クラスを使用します。

_jBtnSelection.addActionListener(new ActionListener() { 
  public void actionPerformed(ActionEvent e) { 
    selectionButtonPressed();
  } 
} );_

後で、selectionButtonPressed()を定義する必要があります。これは、アクションを処理するための個々のメソッドへの呼び出しがボタンの定義のすぐ隣にあるため、複数のボタンがある場合に効果的です。

2番目のメソッドでは、選択メソッドを直接呼び出すこともできます。この場合、他のアクションが発生した場合、タイマーが切れたときなどにselectionButtonPressed()を呼び出すことができます(ただし、この場合、メソッドはselectionChanged())。

48
David Koelle

最善の策は、 Java Swingチュートリアル 、特に ボタンのチュートリアル を確認することです。

短いコードスニペットは次のとおりです。

jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );
7
Alex B

これが機能する場合はidkですが、変数名を作成しました

public abstract class beep implements ActionListener {
public static void main(String[] args) {
    JFrame f = new JFrame("beeper");
    JButton button = new JButton("Beep me");
    f.setVisible(true);
    f.setSize(300, 200);
    f.add(button);
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //insert code here
        }
    } );

}

}

1
Ronald Ortiz

私は完全には従いませんでしたが、アクションリスナーを追加するには、単に addActionListener (Abstract Buttonから)を呼び出します。これで完全に回答が得られない場合は、詳細を教えてください。

0
AdamC