天天看點

關于JComboBox觸發事件總是執行兩次的問題

今天用到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(即選中和未被選中)