2011-01-27 17 views
0

私は厄介な問題があり、どこから来ているのか分かりません。私はアプリケーションと簡単なUIを持っています。問題は、私がプログラムボタンを実行すると、2回目のクリックだけに反応するということです。彼らがしなければならないことをした後、ボタンは最初のクリックに反応します。私は本当に問題の原因がわからない。ここでのJButtonとActionListenerを結合するためのいくつかのソースコードは次のとおりです。jButtonは2回目のクリックにのみ応答します(Netbeans 6.9.1、Java)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    jButton1.addActionListener(new SolutionListener()); 
} 

そしてここでは、それ自体のActionListenerである(それは場合に役立ちます):

private class ListListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     jTextArea1.setText(null); 
     if (jTextField2.getText().equals("")) { 
      jTextArea1.append("Input a value"); 
     } 
     else { 
      for (int i = 2; i <= Integer.valueOf(jTextField2.getText().trim()); i++) { 
       if(isSquare(i) == true) { 
        continue; 
       } 
       else { 
        PE pe = new PE(i); 
        answer = pe.solve(); 
        jTextArea1.append(i + "\t"); 
        jTextArea1.append(answer[0].toString() + " "); 
        jTextArea1.append(answer[1].toString() + "\n"); 
       } 
      } 
     } 
    } 
} 

私は、事前に感謝を任意の助けを本当に感謝します!

答えて

0

あなたがしようとすると、この:

jButton1.addActionListener(new ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      System.out.println("outside Action"); 
      jButton1.addActionListener(new ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent evt2) { 
        System.out.println("inside Action"); 
       } 
      }); 
     } 
    }); 

ワンキークリックは「外のアクション」を印刷し、第二は、「アクションの内側」に印刷されます。
JButtonあたり1つのActionListenerが必要です。

2

actionPerformed()コードのボタンにActionLIstenerを追加しないでください。 (私はそれがどのように動作するのか分かりません)。

プログラムには2つのリスナーが必要です。また、ボタンを押すたびに2番目のリスナを追加するため、新しいリスナを追加したままになるため、イベントコードは複数回実行されます。

さらに詳しい情報をご希望の場合は、SSCCEをご覧ください。数行のコードは、GUIの構築方法を示していません。

関連する問題