您的位置:首页 > 其它

关于JComboBox触发事件总是执行两次的问题

2016-11-02 21:29 393 查看

关于JComboBox触发事件总是执行两次的问题

http://263229365.iteye.com/blog/1040329

博客分类:

Swing

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

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

第一次是上次被选中的项的 State 由 Selected 变为 deSelected ,即取消选择

第二次是本次被选中的项的 State 由 deSelected 变为 Selected ,即新选中,所以,必然的 ItemStateChanged 事件中的代码要被执行两次了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐