我想阻止在用户选择JComboBox
中已选择的值时触发事件。
例如,假设我有一个JComboBox
,其模型具有以下值:
当前选择的值为“Cat”。如果用户再次选择“Cat”,我想阻止听众收到通知,而“Cat”已被选中。
我尝试通过在模型中的setSelectedItem(Object)
中添加一个检查来实现此功能。然而,这不起作用。
我的下一个假设是,如果我想要这个功能,我需要继承JComboBox
并覆盖它的setSelectedItem(Object)
和contentsChanged(ListDataEvent)
函数。
但鉴于contentsChanged(ListDataEvent)
的文档,我对替代它犹豫不决。因此,我向大家提出的问题是:
有没有更好的方法来获得所需的功能,不需要子类JComboBox
并覆盖它的setSelectedItem(Object)
和contentsChanged(ListDataEvent)
函数?
答案 0 :(得分:2)
我想阻止在用户触发动作事件时 选择已在JComboBox中选择的值。
使用ItemListener,
将代码包装到if (e.getStateChange() == ItemEvent.SELECTED) {
中,如Oracle教程中所述,