2012-10-03 20 views
0

好吧,讓每個文本字段成爲動作偵聽器。我做了很多測試,發現添加動作監聽器不是問題。問題出現在下面的代碼中,因爲對於前四個文本字段,hello窗口顯示,但不是ok。但在最下面的窗口中,確定的窗口和hello窗口彈出。我做錯了什麼?需要幫助在java中製作合適的動作偵聽器

public class handler implements ActionListener 
{ 
    public void actionPerformed(ActionEvent event) 
    { 
     if (event.getSource() == text) 
     { 
      JOptionPane.showMessageDialog(null, "ok"); 
     } 
     else if (event.getSource() == text1) 
     { 
      JOptionPane.showMessageDialog(null, "ok"); 
     } 
     else if (event.getSource() == text2) 
     { 
      JOptionPane.showMessageDialog(null, "ok"); 
     } 
     else if (event.getSource() == text3) 
     { 
      JOptionPane.showMessageDialog(null, "ok"); 
     } 
     else if (event.getSource() == text4) 
     { 
      JOptionPane.showMessageDialog(null, "ok"); 
     } 
     JOptionPane.showMessageDialog(null, "hello"); 
    } 
} 
+4

嘗試使用'.equals(...)'而不是'==',以及預期的行爲究竟是什麼? –

回答

1

你打的問題是,你正在做一個淺淺的比較:

event.getSource() == textX 

因此,你永遠不會滿足任何一個條件在你的if-else再也看不到你的「OK」 text1 ... text4的對話框。

它看起來像您試圖爲多個文本字段使用單個ActionListener,然後根據事件源(發生事件的文本字段)區分行爲。

而不是這樣做,你可能要考慮爲每個文本字段創建一個ActionListener實現。

我通常將我的ActionListeners創建爲匿名類,這樣我就可以在發生事件時自定義特定字段發生的情況,但是我不必在應用程序中擴散類。

+0

非常感謝!我一直堅持這一點。 – Squirvin