JCombobox – 仅在值更改时执行actionlistener

我有一个JComboBox ,我有一个监听器附加到它。

现在,每当用户从下拉列表中“选择”事件时,即使他们刚刚重新选择之前选择的值,也会触发事件。

如果combobox的选定值与选择之前的值不同,有没有办法只触发事件?

我想我可以将combobox的值存储在不同的字段中,并在每次事件触发时对它进行比较,这看起来有点矫枉过正。 我有20个左右这样的combobox。 我宁愿不再有20个变量来存储值,所以事件不会触发。

一定有更好的方法。

谢谢您的帮助!

您是否考虑过使用ItemListener而不是ActionListener?

  JComboBox 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()来检查发生了哪一个。