关于JComboBox触发事件总是执行两次的问题
来源:互联网 发布:js跨域获取iframe内容 编辑:程序博客网 时间:2024/04/19 18:03
今天用到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触发事件总是执行两次的问题
- JComboBox itemStateChanged事件总是触发两次
- 关于Java中JComboBox 的itemStateChanged事件执行两次的解释
- 一个事件被触发两次的问题
- 为什么在执行JCombobox的ItemStateChanged事件时默认执行两次
- (Java)JComboBox的itemStateChanged事件被选中点击执行两次的解决方法
- 解决长按手势两次触发事件的问题
- Fastclick 导致click事件触发两次的问题
- Zepto tap事件中需要触发两次的问题
- 关于JComboBox的小问题
- 关于iscroll5 click事件触发两次
- 关于键盘触发事件和屏幕触发事件的问题
- 关于键盘触发事件和屏幕触发事件的问题
- iScroll click事件触发两次的解决方案
- 按钮事件触发两次
- 关于js中动态生成的点击事件触发两次的讨论
- 系出名门Android(10) - HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理
- 系出名门 Android 系列文章索引
- JSplitPane按比例分割的问题
- 关于JPanel的布局显示问题
- 鼠标监听
- 关于JComboBox触发事件总是执行两次的问题
- AndroidManifest.xml文件分析
- Eclipse的workspace文件夹的更改
- Linux操作系统中编译安装GCC详解以及需要注意的问题
- 今日离职
- 关于外包加班的疑问-->已跳入火坑之中-->正在纠结...
- JDialog关闭的问题
- 外包的感受:第一次进外包,可能也是最后一次了!
- 如何呼出windows XP锁定桌面的界面