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

时间:2016-09-12 16:27:08

标签: java swing jcombobox

要在组合框中获取项目的位置,我通常使用.colorkey(@key: ~"black") {方法,但是当您具有相等的项目时,此方法不再有效。

示例

假设我们的getSelectedIndex()JCombobox中有以下项目,那么在选择{Harry , John , Mary , Harry}(组合框的第四项)时,我们无法得到正确的输出:{ {1}}但我们得到Harry(第一个项目的位置)。

3实现允许我们添加相同的项目,但当我们尝试使用0方法在JCombobox中获取位置时,我们仍会遇到此行为。

那么有没有办法让一个Item的正确位置或索引等于JCombobox中的另一个项?

1 个答案:

答案 0 :(得分:3)

将数据包装在自定义类中。您可以覆盖toString并返回数据对象以供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使用此方法来获取元素的索引