Dou*_*oug 3 java swing onchange actionlistener jcombobox
我有一个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");
}
});
Run Code Online (Sandbox Code Playgroud)
它会触发两次,因为一个项目变为DESELECTED而另一个变为SELECTED.两个事件都会发生.你可以通过调用来检查发生了哪一个e.getStateChange().
| 归档时间: |
|
| 查看次数: |
9792 次 |
| 最近记录: |