[英]Using a value to fire Jcombobox actionlistener instead of getselectedindex?
[英]JCombobox - Only execute actionlistener when value changes
我有一個JComboBox
,我有一個監聽器附加到它。
現在,每當用戶從下拉列表中“選擇”事件時,即使他們剛剛重新選擇之前選擇的值,事件也會觸發。
如果組合框的選定值與選擇之前的值不同,有沒有辦法只觸發事件?
我想我可以將組合框的值存儲在不同的字段中,並在每次事件觸發時進行比較,這看起來有點矯枉過正。 我有20個左右這樣的組合框。 我寧願不再有20個變量來存儲值,所以事件不會觸發。
一定有更好的方法。
謝謝您的幫助!
您是否考慮過使用ItemListener而不是ActionListener?
JComboBox<String> cb = new JComboBox<>(new String[] {"Stack", "Over", "Flow"});
cb.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println("Change");
}
});
它會觸發兩次,因為一個項目變為DESELECTED而另一個變為SELECTED。 兩個事件都會發生。 您可以通過調用e.getStateChange()
來檢查發生了哪一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.