java阻止当前选择的选择通知JComboBox中的侦听器
我想防止在用户选择JComboBox
中已选择的值时触发事件
例如,假设我有一个JComboBox
,其模型具有以下值:
- 猫
- 狗
- 鱼
- 鸟
- 蛇
当前选择的值为“Cat”。如果用户再次选择“Cat”,而“Cat”已经被选中,我想防止听众收到通知
我试图通过在模型的setSelectedItem(Object)
中添加一个检查来实现这一点。然而,这并不奏效
我的下一个假设是,如果我想要这个功能,我需要将JComboBox
子类化,并覆盖它的setSelectedItem(Object)
和contentsChanged(ListDataEvent)
函数
然而,考虑到contentsChanged(ListDataEvent)
的文档,我不太愿意重写它。因此,我向你们所有人提出一个问题:
有没有更好的方法来获得所需的功能,而不需要对JComboBox
进行子分类并覆盖它的setSelectedItem(Object)
和contentsChanged(ListDataEvent)
函数
# 1 楼答案
使用ItemListener,
如图所示,将代码包装到
if (e.getStateChange() == ItemEvent.SELECTED) {
中,如Oracle教程所述for example