0

私はまだ学び始めたばかりなので、Java と JFrame には慣れていません。

私の質問は、メソッドにエラーがあるということactionPerformedです。与えられたエラーは、e.getsource == b私が信じるところにあります。

私が理解していることから、で作成したpublic static void main(String[] args)ボタンは、ボタンの値をに渡しませんactionPerformed

私の質問が明確でない場合は申し訳ありません。

これが私のコードです

public static void main(String[] args){

    JButton b = new JButton("Click here");

    JFrame newWindow = new JFrame("Test");

    newWindow.setVisible(true);
    newWindow.setSize(250,250);
    newWindow.setLayout(null);

    newWindow.add(b);

    b.addActionListener(this);

}

ここに私のコードの別の部分があります

public void actionPerformed(ActionEvent e)
{
    if ( e.getSource() == b )
    { 
        //do something 
    }
}
4

2 に答える 2

2

私が理解していることから、public static void main(String[] args) で作成したボタンは、ボタンの値を actionPerformed に渡しません。

はい、あなたは正しいです。メソッドでJButton オブジェクトbが表示されませんactionPerformedbグローバルに宣言する必要があります。

   class MyClass extends JFrame implements ActionListener{
      // Declare here to make visible to actionPerformed
      JButton b = new JButton("Click here"); 

       MyClass(){    
        super("Test");
        b.addActionListener(this);
        add(b);
        setVisible(true);
        setSize(250,250);    
       }

       public void actionPerformed(ActionEvent e){
         if ( e.getSource() == b ){ 
         //do something 
         }
       }
       public static void main(String[] args){
            new MyClass();
       }
   }
于 2013-11-14T17:01:38.717 に答える
0

ですe.getSource()。これはメソッドであり、すべてのメソッドは括弧で終わります()

また、bでは表示されませんactionperformed()。グローバル変数にします。つまり、外部で定義し、アクセスできるようにしmain()ますstaticmain()

さらに、Masud尋ねられたように、あなたのクラスはActionListenerインターフェイスを実装しましたか?

于 2013-11-14T16:59:13.883 に答える