要在组合框中获取项目的位置,我通常使用.colorkey(@key: ~"black") {
方法,但是当您具有相等的项目时,此方法不再有效。
示例:
假设我们的getSelectedIndex()
:JCombobox
中有以下项目,那么在选择{Harry , John , Mary , Harry}
(组合框的第四项)时,我们无法得到正确的输出:{ {1}}但我们得到Harry
(第一个项目的位置)。
3
实现允许我们添加相同的项目,但当我们尝试使用0
方法在JCombobox
中获取位置时,我们仍会遇到此行为。
那么有没有办法让一个Item的正确位置或索引等于JCombobox
中的另一个项?
答案 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
使用此方法来获取元素的索引