我原来中习惯用ActionListener,在JComboBox中一回车,总会触发两次事件,JTextField就只触发一次。
原因是JComboBox中的Item有两种状态:deSelected 和 Selected 。输入新内容后原来的Item变成deselected,触发一次事件;
新的Item变成selected状态又触发一次事件。解决方法是使用ItemListener,只在Selected时候响应事件:
comboBox.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED){
// ...
}
}
});
但这样又有一个问题:当你敲击两下回车时只激发一次事件,因为第二次state并没有change。。。这个要怎么办呢?