在 Java 中获取 JCombobox 中项目的正确位置

Getting The Correct Position of an Item inside a JCombobox in Java

要获取组合框中项目的位置,我通常使用 getSelectedIndex() 方法,但是当项目 等于 时,此方法不再有效。

示例

假设我们JCombobox中有以下项目: 3 但我们得到 0 (第一个项目的位置)。

JCombobox 实现允许我们添加相等的项,但是当我们尝试使用 getSelectedIndex() 方法获取它们在 JCombobox 中的位置时,我们仍然会遇到此行为。

那么有没有办法获得与 JCombobox 中的另一个项目相等的项目的正确位置或索引?

将数据包装在自定义 class 中。您可以覆盖 toString 和 return 数据对象以供 JComboBox 显示。例如:

public class MyClass{

    private String myName;

    public MyClass(String name){
        this.myName = name;
    }
    @Override
    public String toString(){
        return myName;
    }

}

myComboBox.add(new MyClass("Harry"));
myComboBox.add(new MyClass("John"));
myComboBox.add(new MyClass("Mary"));
myComboBox.add(new MyClass("Harry"));

根据它们的 equals 方法,第一个和最后一个对象将不相等 - 这引出了一个重点:确保 MyClass 的实现不会覆盖 equals , 因为这个方法被 getSelectedIndex 用来获取元素的索引