1. ホーム
  2. java

[解決済み] 複数のボタンをリッスンするアクションリスナーを追加する方法

2022-02-07 03:18:56

質問

アクションリスナーについて、何が間違っているのか考えています。複数のチュートリアルに沿っていますが、アクションリスナーを使用しようとすると、netbeansとeclipseはエラーを出します。

以下は、ボタンを動作させようとする簡単なプログラムです。

何が間違っているのでしょうか?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;


public class calc extends JFrame implements ActionListener {



    public static void main(String[] args) {

        JFrame calcFrame = new JFrame();

        calcFrame.setSize(100, 100);
        calcFrame.setVisible(true);

        JButton button1 = new JButton("1");
        button1.addActionListener(this);

        calcFrame.add(button1);
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == button1)
    }  

}

を使用すると、アクションリスナーが登録されないからです。 if(e.getSource() == button1) を見ることができません。 button1 シンボルが見つからないというエラーが発生します。

どうすればいいですか?

はありません。 this のポインタを静的メソッドで使用します。 (このコードがコンパイルできるとも思えません)。

のような静的メソッドでこれらのことをやってはいけないのです。 main() コンストラクタで設定します。 実際に動くかどうかを確認するために、コンパイルや実行はしていませんが、試してみてください。

public class Calc extends JFrame implements ActionListener {

    private Button button1;

    public Calc()
    {
        super();
        this.setSize(100, 100);
        this.setVisible(true);

        this.button1 = new JButton("1");
        this.button1.addActionListener(this);
        this.add(button1);
    }


    public static void main(String[] args) {

        Calc calc = new Calc();
        calc.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == button1)
    }  

}