`
263229365
  • 浏览: 472042 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

今天用到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 事件中的代码要被执行两次了。

1
1
分享到:
评论

相关推荐

    用JComboBox和JList实现的一个文件浏览器组件

    2. 组件间的交互:通过`ActionListener`或`ItemListener`监听`JComboBox`的选择事件,当选择改变时触发`JList`的更新。 3. 模型管理:对于`JComboBox`,我们可以使用`DefaultComboBoxModel`来存储文件夹路径;对于`...

    java图形实例大全

    按钮可以触发特定的事件,例如执行一个函数或方法。在Java中,按钮可以通过ActionListener接口来监听用户的点击操作,实现事件处理。 2. **Swing动画**:Swing允许开发者创建动态效果,通过定时器(Timer)和组件的...

    汇率转换器

    `ZZZ`类继承自`JFrame`,并实现了`ActionListener`接口,这意味着它可以响应Swing组件触发的事件。 ##### 2. 用户界面初始化 ```java public ZZZ() { // 初始化组件 String[] xl1 = {"美元USD", "人民币CNY", ...

    2021-2022计算机二级等级考试试题及答案No.18871.docx

    7. **菜单事件**:在Windows应用程序中,设置菜单项的Caption属性和ShortCut属性,按下相应的快捷键或点击菜单项会触发Click事件。按Alt+D不会触发,因为'&'字符定义了D作为快捷键。 8. **数据库操作**:在数据库中...

    Java编程基础(2011-2012学年第一学期)复习提纲.doc

    - `&` 和 `|` 是位逻辑运算符,它们总是计算两侧的操作数。 #### 第三章 控制结构 **1. Java 选择、循环结构的使用** - **if-else** 语句用于简单的条件判断。 - **switch-case** 语句用于多分支条件判断。 - **...

    2021-2022计算机二级等级考试试题及答案No.11122.docx

    8. **直到型循环**:直到型循环至少能执行一次循环体,这是因为它首先执行循环体,然后检查条件是否满足继续执行的要求。(正确) 9. **Word 2003 替换操作**:使用替换操作不仅可以删除空格和回车,还可以替换文档...

    JAVA基础笔记

    - **JComboBox**:组合框,下拉列表组件。 - **JList**:列表组件,用于显示一个项目列表。 #### Java Swing 布局管理器 - **FlowLayout**:流布局,组件按顺序从左到右、从上到下的顺序放置。 - **BorderLayout**...

    ArchiesGUI:Archies Gallery - 购物 GUI

    比如,当用户点击一个按钮时,会触发一个事件,然后由对应的事件处理器(事件监听器)来处理这个事件,执行相应的功能,如添加商品到购物车。 5. **数据持久化** ArchiesGUI需要存储用户的选择和购物车信息,这...

    JAVA复习题有答案.pdf

    7. **循环结构**:`do-while`循环在检查条件之前至少执行一次循环体。 8. **数组访问**:访问数组元素时,索引从0开始,所以`a[1]`对应于数组中的第二个元素。如果索引超出范围,会出现数组越界异常。 9. **...

    Java全国自考历年考试(参考答案)2.doc

    初始时`x`为10,每次循环`x`减1,因此会执行3次循环,打印三个星号。 **正确答案**: B.*** #### 3. 内存回收情况 - **代码段**: ```java class U { int x, int y; U(int a, int b){x= a; y = b;} void copy...

Global site tag (gtag.js) - Google Analytics