2011-01-27 32 views
0

我有一個令人討厭的問題,我似乎並不明白從哪裏來。我有一個應用程序和一個簡單的用戶界面。問題是,當我運行程序按鈕只響應第二次點擊。在他們做完他們必須做的事情之後,按鈕會響應第一次點擊。我真的不知道問題的根源是什麼。下面是結合JButton,並ActionListener的一些源代碼:jButton只響應第二次點擊(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只需要一個ActionListener。

2

你不應該添加一個ActionListener中的actionPerformed()代碼的按鈕。 (我不知道它是如何工作的)。

您的程序中必須有兩個偵聽器。此外,因爲每次按下按鈕時都會添加第二個偵聽器,因此您將繼續添加新的偵聽器,然後多次執行事件代碼。

如需更多幫助,後一個SSCCE演示該問題。幾行代碼沒有向我們展示如何構建GUI。