今天用到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 事件中的代码要被执行两次了。
分享到:
相关推荐
java JComboBox的事件处理 java JComboBox的事件处理 java JComboBox的事件处理
java JComboBox的使用 java JComboBox的使用 java JComboBox的使用
java 建立有图像的JComboBox java 建立有图像的JComboBox java 建立有图像的JComboBox
支持自动过滤可选项的JComboBox 支持键盘选择、鼠标选择
JComboBox动态绑定数据库实例,数据库为Sql2000,使用JDBC连接数据库
一个多选的JComboBox完整例子,JComboBox下面包含JCheckBox
能够通过JComboBox的选择实现动态生成jCombobox菜单,从而实现动态级联效果
实现下拉列表JComboBox中值和显示不同
java 建立可自行输入的JComboBox java 建立可自行输入的JComboBox java 建立可自行输入的JComboBox
JComboCheckBox JComboBox与JCheckBox结合源码。 网上下载代码,修改了一点点。。。上传,以备后用。。
jcombobox,众所周知,java的下拉列表框,非常的难看-丑,该源码修改了其外表
很久没用JAVA了,现在项目上需要在jtable里用jcombobox做显示,自己写了一些但是没有选择的时候没有下拉按钮,这个例子纠正了这个问题
JComboBox自动过滤,很好用~,能添加到swing,无ui限制
关于swing组件JComboBox中中如何获得应用下拉単中的元素得到元素的Object
java 利用ComboModel构造JComboBox java 利用ComboModel构造JComboBox
NULL 博文链接:https://jisonami.iteye.com/blog/2181450
主要介绍了Java Swing JComboBox下拉列表框的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
multicolumn jcombobox demo
JComboBox是Swing库提供的一个下拉列表组件,它允许用户从预定义的选项中选择一个或多个选项。
主要代码: this.setTitle("下拉框美化")... JComboBox<String> cb = new JComboBox(strArr); cb.setUI(new ComboBoxUIEx()); cb.setBounds(10, 10, 100, 50); container.add(cb); this.setVisible(true);