java - 防止当前选择的选择通知 JComboBox 中的监听器

标签 java swing events jcombobox

我想防止当用户选择已在 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 教程中所述

  • for example

关于java - 防止当前选择的选择通知 JComboBox 中的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569847/

相关文章:

java - 我们是否应该始终定义接口(interface)和抽象类,即使只有 1 个类扩展它们?

c# - 事件仅在构建后发生?

Java向JCalendar添加图标

java - 从单独的类引用 Jframe

java - 无法使用 Java 代码从组合框中获取选定的值

events - DDD、领域服务和事件

javascript - jQuery 将事件绑定(bind)到具有动态类的元素

java - Spring 构建问题 - 找不到 Beans 模式

JavaFx 空组合框

java - 在 Android Studio Canary 5 中将 Kotlin 恢复为 Java 代码