在 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
用来获取元素的索引
要获取组合框中项目的位置,我通常使用 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
用来获取元素的索引