2013-07-01 29 views
8

ChangeListenerItemListener對於JCheckBoxJRadioButton有什麼區別?當他們被選中/取消選擇時,他們都能正常工作。ChangeListener和ItemListener之間的區別

我知道一些組件不支持ChangeListener,比如JComboBox。除了ChangeListenerItemListener僅適用於某些組件的原因之外。它們之間有什麼區別,比如它們何時產生?

任何答案表示讚賞。提前致謝。

回答

5

JCheckBox這兩個聽衆的工作原理類似,都是通過點擊或切換空格鍵或通過編程方式通過doClick()方法(類似於鼠標點擊)來觸發狀態更改時的事件。不過,一個主要區別是JCheckBox的itemListener可以通過setSelected(boolean)方法觸發,該方法允許人們根據所需的狀態觸發事件,而其他人只有在狀態改變後才能觸發事件。那麼爲什麼它很重要?考慮應用程序啓動時,GUI需要配置的定義狀態,並使用setSelected將觸發ItemListener。請注意,setSelected是ItemListener的獨佔功能,對ActionListener沒有影響。不要同時註冊ActionListener和ItemListener,因爲兩者都將被觸發,以隨機狀態着陸組件

+1

問題是關於_change-_ vs. itemListener,而不是關於動作vs. itemListener :-)看到它被接受,你的水晶球揭示了OP後真的是+1! – kleopatra

+0

釋放按鈕時,只會引發一次項目事件(itemStateChanged方法調用)。 更改事件(stateChanged方法調用)會引發兩次:當您按下按鈕時,如果您想要澄清您的答案,請在釋放按鈕時再次按下 – rags

+0

,但編輯方式是:-)無論如何,您的評論不是足夠精確:您無法真正預測ChangeListener多長時間通知用戶手勢觸發的單個選擇更改(因爲它是非特定事件,廣播模型狀態的多個方位) – kleopatra

1

當按鈕狀態發生任何變化時,ChangeListener不滿足。沒有通知ChangeListener發生了什麼變化,只是對象發生了變化。項目監聽器僅在選擇項目時不滿足;通過用戶或setSelected方法。當調用setSelected方法時,ChangeListener不是不成立。它是對象狀態的變化。

+0

我的意思是鼠標光標進入按鈕。 – luke657

+0

ahhh,我明白了,謝謝:該屬性的技術名稱是_rollover_ – kleopatra