2010-10-24 98 views
1

我正在編寫一個Java應用程序,並且我有四個單選按鈕,稱它們爲rb1,rb2,rb3和rb4。我已經將其中兩個添加到一個單選按鈕組,另外兩個添加到第二個單選按鈕組。然後我把他們全部四個加到了一個小組中。爲所有四個按鈕定義不同的操作偵聽器。Java單選按鈕異常

但是,當我點擊一個組中的第一個按鈕時,它會觸發它自己的動作偵聽器,而另一個組件中的第二個按鈕則會觸發它。當我點擊它時,錯誤觸發的按鈕根本不會觸發。

我只能懷疑他們不應該都在一個小組中,但這似乎有點緊張,作爲解釋。有任何想法嗎?

在此先感謝您的幫助。

John Doner

+0

您可能需要顯示一些代碼。我想不出爲什麼將它們全部添加到單個面板會導致此問題。 – 2010-10-24 00:03:31

+0

定義中沒有錯字? – Orbit 2010-10-24 00:09:26

+1

我已將多個按鈕組放在同一個容器中。我會懷疑你混淆了添加動作偵聽器,並且「另一個組中的第二個按鈕」實際上被附加到同一組中的一個。請記住,當你點擊一個單選按鈕時,你將得到兩個動作監聽器事件,一個在被選中的按鈕上,另一個在被取消選擇的事件上。 – 2010-10-24 00:10:34

回答

0

幾組單選按鈕住在同一個面板上是完全正確的。

仔細檢查你的聽衆。檢查listener4實際上是否添加到了rb4。你實際上可能已經這樣做了,而不是:

rb1.addActionListener(listener1); 
rb2.addActionListener(listener2); 
rb3.addActionListener(listener3); 
rb1.addActionListener(listener4); // NOTE: listener added to rb1 instead of rb4 

如果這是發生了什麼事,然後:

  • 點擊RB1將火listener1和listener4
  • 點擊RB4會做什麼(不附加任何監聽器它)

這似乎符合你的症狀。

+0

你是對的!驚人的多少次我可以檢查我自己的代碼,並錯過了一個明顯的錯誤!謝謝。 – 2010-10-24 13:58:12