我想防止当用户选择已在 JComboBox
中选择的值时触发事件。
例如,假设我有一个 JComboBox
,其模型具有以下值:
- 猫
- 狗
- 鱼
- 鸟
- 蛇
当前选择的值为“Cat”。如果用户再次选择“Cat”,而“Cat”已被选择,我想阻止监听器收到通知。
我尝试通过在模型中的 setSelectedItem(Object)
中添加检查来实现此目的。然而这并没有奏效。
我的下一个假设是,如果我想要此功能,我需要子类化 JComboBox
并覆盖它的 setSelectedItem(Object)
和 contentsChanged(ListDataEvent)
函数。
然而,考虑到 contentsChanged(ListDataEvent)
的文档,我犹豫是否要覆盖它。因此,我向你们所有人提出的问题是:
是否有更好的方法来获得所需的功能,而不需要子类 JComboBox
并覆盖它的 setSelectedItem(Object)
和 contentsChanged (ListDataEvent)
函数?
最佳答案
I would like to prevent an action event from being fired when a user selects a value already selected in a JComboBox.
使用ItemListener ,
将代码包装到
if (e.getStateChange() == ItemEvent.SELECTED) {
中,如图所示,如 Oracle 教程中所述
关于java - 防止当前选择的选择通知 JComboBox 中的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569847/