解决在JComboBox执行监听事件时总…

来源:互联网 发布:杭电网络教学平台 编辑:程序博客网 时间:2024/06/03 15:44

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

所以,当改变下拉列表中被选中的项的时候,其实是触发了两次事件:

0 0