簡體   English   中英

JCombobox - 僅在值更改時執行actionlistener

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM