我想防止在用戶選擇已在JComboBox
中選擇的值時觸發事件。防止從JComboBox中通知偵聽器中選擇當前選擇
例如,假設我有一個JComboBox
其模式具有以下值:
- 貓
- 狗
- 魚
- 鳥
- 蛇
當前選擇的值是「Cat」。如果用戶再次選擇「貓」,而「貓」已被選中,我想阻止收聽者收到通知。
我試圖通過在模型中添加一個檢查setSelectedItem(Object)
來實現這一點。但是這並沒有奏效。
我的下一個假設是,如果我想要這個功能,我將需要子類JComboBox
並覆蓋它的setSelectedItem(Object)
和contentsChanged(ListDataEvent)
函數。
但是,鑑於contentsChanged(ListDataEvent)
的文檔,我很猶豫要重寫它。因此我對你們所有的問題:
有沒有更好的方式來獲得,不需要子分級JComboBox
並重寫它的setSelectedItem(Object)
和contentsChanged(ListDataEvent)
此功能所需的功能?
*「我想防止的動作被解僱的事件..「*爲什麼?或者說:爲什麼不在這種情況下忽略它呢?好像你已經把馬車放在馬前了。 –
這很容易,創建一個變量保存選定的值,在下一次選擇後,將其與選定值進行比較,它是等於,*什麼都不做*,否則,將選定的值賦值給它並*執行您的操作*。 – Azad
這些JComboBox用於在其他對象中設置值,這些對象本身會觸發其他事件。另一個問題是我沒有意識到這種情況直到最近纔會發生,所以我的代碼不會爲此進行測試。另外,我的模型是這樣的,它具有「禁用」的值。如果我能找到一種方法來做到這一點,那麼我也可以防止在任何地方沒有進行額外的測試時選擇這些「禁用」的值。 – Legowaffles