我在面板上使用了一个组合框,据我所知,我们可以添加仅包含文本的项目
comboBox.addItem('item text');
但有时我需要使用项目和项目文本的某些值,例如在html中选择:
<select><option value="item_value">Item Text</option></select>
有没有办法在组合框项目中设置值和标题?
现在我使用哈希来解决这个问题。
答案 0 :(得分:33)
将值包装在类中并覆盖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;
}
}
将ComboItem添加到您的comboBox。
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();
答案 1 :(得分: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"));
答案 2 :(得分:1)
addItem(Object)接受一个对象。默认的JComboBox渲染器调用该对象上的toString(),这就是它显示为标签的内容。
因此,不要将String传递给addItem()。传入一个对象,其toString()方法返回所需的标签。该对象也可以包含任意数量的其他数据字段。
尝试将其传递到您的组合框中,看看它是如何呈现的。 getSelectedItem()将返回该对象,您可以将其强制转换为Widget以获取值。
public final class Widget {
private final int value;
private final String label;
public Widget(int value, String label) {
this.value = value;
this.label = label;
}
public int getValue() {
return this.value;
}
public String toString() {
return this.label;
}
}
答案 3 :(得分:0)
方法调用setSelectedIndex("item_value");
不起作用,因为setSelectedIndex
使用顺序索引。
答案 4 :(得分:0)
创建一个名为ComboKeyValue.java的新类
public class ComboKeyValue {
private String key;
private String value;
public ComboKeyValue(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;
}
}
要添加新项目时,只需编写以下代码
DefaultComboBoxModel model = new DefaultComboBoxModel();
model.addElement(new ComboKeyValue("key", "value"));
properties.setModel(model);
答案 5 :(得分:-1)
您可以使用String数组添加jComboBox项
String [] items = { "First item", "Second item", "Third item", "Fourth item" };
JComboBox comboOne = new JComboBox (items);