swing - JComboBox 项目更改

标签 swing jcombobox java

我的 JComboBox 模型包含 item1item2item1 等项目。我的问题是当我在 JComboBox 中选择第三项 (item1) 并检查 getSelectedIndex() 它总是返回 0。

如果我的模型中的项目相同,我如何才能以不同方式获取每个项目的索引?喜欢:

  • item1 返回 0
  • 项目 2 返回 1
  • item1 返回 2

最佳答案

它返回 index = 0。因为 getSelectedIndex() 方法对 JComboBox 中的对象使用 .equals 并将其与选定的对象进行比较。在您的情况下,因为 item1 也在索引 0 处,它发现条件为真并返回 0。如果您想获得不同的索引,则必须覆盖 getSelectedIndex() 方法。

JComboBox 的默认 getSelectedIndex() 方法概要,位于 Java2s :

public int getSelectedIndex() {
        Object sObject = dataModel.getSelectedItem();
        int i, c;
        Object obj;

        for (i = 0, c = dataModel.getSize(); i < c; i++) {
            obj = dataModel.getElementAt(i);
            if (obj != null && obj.equals(sObject))
                return i;
        }
        return -1;
    }

您应该在 2 个条目中有一些不同的东西 [如果项目对象有名称或其他任何东西,则可能是 itemName] 以获得所需的结果。覆盖 getSelectedIndex() 并比较所有应该不同的东西。如果两个条目完全相同,那么添加两次有什么意义?

关于swing - JComboBox 项目更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6438374/

相关文章:

java - 如何创建一个类来执行 Java 中的所有 ActionListener 功能?

java - JComboBoxKeySelectionManager 的使用

java - 如何将数据从一个 JComboBox 传递到一条 SQL 语句,该 SQL 语句将调用第二个 JComboBox 的值?

Java swing : warning ComboBox is a raw type. 对泛型类型 JComboBox<E> 的引用应参数化

java - 编译java时找不到符号

java - 类中的空指针异常(代码看起来不错)Java

java - 在 Java 中保留屏幕边缘

java - 从 json 对象中获取值

java - 如何使用自定义 TableCellEditor 通过单击选择表格行?

java - 当数据库更改时在 Android 和桌面 Java 上触发事件