今天用到JcomBox,在JComboBox的監聽事件時總是執行兩次。
代碼如下:
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
comboSelect(); //執行兩次
}
});總是執行兩次,後來查了相關資料,隻要在 comboSelect() 之前加入一個 IF 判斷,
即
if(e.getStateChange() == ItemEvent.SELECTED){}
即可。
修改後的代碼如下:
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED){
comboSelect(); //修改後
}
}
});
網上說的原因是:
ItemListener類中的方法itemStateChanged()事件的itemState有關,itemState在這裡的狀态有兩個,Selected 和 deSelected(即選中和未被選中)