将项目添加到 JComboBox

2022-09-02 00:26:30

我在面板上使用组合框,据我所知,我们可以添加仅包含文本的项目

    comboBox.addItem('item text');

但有时我需要使用项目和项目文本的一些值,如在html select中:

    <select><option value="item_value">Item Text</option></select>

有没有办法在组合框项目中同时设置值和标题?

现在,我使用哈希来解决此问题。


答案 1

将值包装在类中并重写该方法。toString()

class ComboItem
{
    private String key;
    private String value;

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

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

    public String getKey()
    {
        return key;
    }

    public String getValue()
    {
        return value;
    }
}

将组合项添加到组合框中。

comboBox.addItem(new ComboItem("Visible String 1", "Value 1"));
comboBox.addItem(new ComboItem("Visible String 2", "Value 2"));
comboBox.addItem(new ComboItem("Visible String 3", "Value 3"));

每当您获得所选项目时。

Object item = comboBox.getSelectedItem();
String value = ((ComboItem)item).getValue();

答案 2

您可以使用任何对象作为项目。在该对象中,您可以有多个所需的字段。在您的情况下,值字段。您必须重写 toString() 方法才能表示文本。在您的情况下,“项目文本”。请参阅示例:

public class AnyObject {

    private String value;
    private String text;

    public AnyObject(String value, String text) {
        this.value = value;
        this.text = text;
    }

...

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

comboBox.addItem(new AnyObject("item_value", "item text"));

推荐