关于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 事件中的代码要被执行两次了。
相关文章推荐
- 关于JComboBox触发事件总是执行两次的问题
- 关于JComboBox触发事件总是执行两次的问题
- 关于JComboBox触发事件总是执行两次的问题
- 关于Java中JComboBox 的itemStateChanged事件执行两次的解释
- 关于aspx的page_load事件执行两次的问题
- JComboBox itemStateChanged事件总是触发两次
- 关于Spring Task 触发时同时执行两次的问题
- 关于Form KeyDown事件的处理代码执行两次的问题
- 关于回车执行(回车触发事件)
- 关于摸态窗口,触发服务器事件会打开新页面的问题
- 在web页面上放了一些服务器按钮,在各个按钮的单击事件中都有代码!可不知道哪里出问题了,怎么操作都不能触发这些事件,好象代码一点都不执行!根本没办法调试!请高手指点一二!谢谢!
- ASP.NET页面执行顺序(第二个LoadViewState事件可以解释我新浪博客中的“HiddenField隐藏域的值改变时onvaluechanged的事件触发问题”一文的问题)
- 关于 contentObserver()中的onChang()执行两次的问题
- 关于Wcf事件多次执行的问题
- 关于TabControl 的Selected 事件触发问题
- 关于VS2005里面的FormClosing事件内添加对话框后重复执行的问题
- 关于JavaScript 弹出窗口 展开 TreeView 事件 无法触发问题
- 关于default.aspx的page_load执行两次的问题
- 关于Spring中用quartz定时器在定时到达时同时执行两次的问题
- 关于“同步请求下Firefox 3中XHR的onreadystatechange事件不会触发”问题