关于JComboBox触发事件总是执行两次的问题
2013-06-13 21:26
281 查看
今天用到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 事件中的代码要被执行两次了。
代码如下:
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触发事件总是执行两次的问题
- 关于Spring Task 触发时同时执行两次的问题
- JComboBox itemStateChanged事件总是触发两次
- 关于aspx的page_load事件执行两次的问题
- 关于Form KeyDown事件的处理代码执行两次的问题
- 关于Java中JComboBox 的itemStateChanged事件执行两次的解释
- 关于键盘触发事件和屏幕触发事件的问题
- 关于Asp.net页面Page_Load被执行两次的问题分享
- 关于动态加载控件 事件触发的问题
- 关于tomcat启动完自动执行的问题,初始化问题,加载两次问题
- 关于Asp.net页面Page_Load被执行两次的问题
- 关于struts2中action请求会执行两次的问题
- 关于VS2008里面的FormClosing事件内添加对话框后重复执行的问题
- 关于摸态窗口,触发服务器事件会打开新页面的问题
- 关于select 被选中触发事件,onclick事件失效问题
- 关于spring定时器一次调用却触发了两次trigger的问题分析
- 解决长按手势两次触发事件的问题
- 关于jquery on方法进行事件绑定触发次数指数叠加的问题