如何按值设置选定的索引 JComboBox

2022-09-01 09:11:07

我想在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。那么,我该如何完成这项工作呢?


答案 1

setSelectedItem("banana").你可以通过阅读javadoc自己找到它。

编辑:既然你改变了问题,我会改变我的答案。

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

  1. 循环访问项目以查找具有给定标签的一个项目(或该项的索引),然后调用(或setSelectedItem(theFoundItem)setSelectedIndex(theFoundIndex))
  2. 覆盖 和 in,以便具有相同名称的两个实例相等,并且只需使用equalshashCodeComboItemComboItemsetSelectedItem(new ComboItem(anyNumber, "banana"));

答案 2

您应该使用模型

comboBox.getModel().setSelectedItem(object);

推荐