java - 有没有办法将对象添加到 JComboBox 并分配一个要显示的字符串?

标签 java swing combobox jcombobox

我想将对象添加到 JComboBox 但在 JComboBox 上为每个对象显示一个字符串。

例如,在下面的html代码中

<select>
  <option value="1">Item 1</option>
  <option value="2">Item 2</option>
  <option value="3">Item 3</option>
  <option value="4">Item 4</option>
</select>

在第一项中,显示的字符串是“Item 1”,但该项的值为“1”。

有没有一种表格可以用 JComboBox 做类似的事情?

最佳答案

首先看看 How to Use Combo Boxes ,特别是Providing a Custom Renderer

基本上,您要定义将包含在组合框中的对象...

public class MyObject {
    private String name;
    private int value;

    public MyObject(String name, int value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public int getValue() {
        return value;
    }
}

然后创建自定义ListCellRenderer知道如何渲染它...
public class MyObjectListCellRenderer extends DefaultListCellRenderer {

    public Component getListCellRendererComponent(
                                   JList list,
                                   Object value,
                                   int index,
                                   boolean isSelected,
                                   boolean cellHasFocus) {
        if (value instanceof MyObject) {
            value = ((MyObject)value).getName();
        }
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        return this;
    }
}

然后填充您的组合框并应用单元格渲染器...
JComboBox box = new JComboBox();
box.addItem(new MyObject(..., ...));
//...
box.setRenderer(new MyObjectListCellRenderer());

同样,您可以覆盖 toString对象的方法,但为了显示目的,我倾向于避免这种情况,因为我喜欢 toString提供有关对象的诊断信息的方法,但这就是我

关于java - 有没有办法将对象添加到 JComboBox 并分配一个要显示的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20155122/

相关文章:

java - java创建的文件的UAC和文件虚拟化

java - 使用 Java 的 LinkedIn API 身份验证

vb.net 将 datagridview 列类型更改为组合框

java - 如何添加按钮 Google+ 登录?

java - 如何创建没有实例变量的枚举类?

java - 处置不工作

java - 中心摆窗

java - 全屏的可能性?

vba - 使用VBA设置组合框的值

java - 使用数据源向组合框添加文本