我想通过值而不是索引在JComboBox中设置选定的索引。怎么做?例

public class ComboItem {

    private String value;
    private String label;

    public ComboItem(String value, String label) {
        this.value = value;
        this.label = label;
    }

    public String getValue() {
        return this.value;
    }

    public String getLabel() {
        return this.label;
    }

    @Override
    public String toString() {
        return label;
    }
}

JComboBox test = new JComboBox();
test.addItem(new ComboItem(0, "orange"));
test.addItem(new ComboItem(1, "pear"));
test.addItem(new ComboItem(2, "apple"));
test.addItem(new ComboItem(3, "banana"));
test.setSelectedItem("banana");

好的,我已经稍微修改了我的问题。我忘了我在JComboBox中有一个自定义项目,这使其变得更加困难。我不能做setSelectedItem,因为我在每个项目中都有一个ComboItem。因此,我该如何完成呢?

最佳答案

setSelectedItem("banana")。您可以只阅读the javadoc自己找到它。

编辑:由于您更改了问题,我将更改答案。

如果要选择带有“香蕉”标签的项目,则有两种解决方案:

  • 遍历项目以找到具有给定标签的项目(或项目的索引),然后调用setSelectedItem(theFoundItem)(或setSelectedIndex(theFoundIndex))
  • 覆盖equals中的hashCodeComboItem,以使两个具有相同名称的ComboItem实例相等,只需使用setSelectedItem(new ComboItem(anyNumber, "banana"))即可;
  • 10-08 19:27