我想在Swing中添加JComboBox
这很简单,但我想为组合中的每个项目分配值。我有以下代码
JComboBox jc1= new JComboBox();
jc1.addItem("a");
jc1.addItem("b");
jc1.addItem("c");
现在我想要的是当点击组合框时它应该相应地返回1,2和3 而不是a,b,c。 有没有办法为组合框中的每个项目分配键值?
答案 0 :(得分:4)
您可以将项目添加为对象,而不是像这样添加字符串:
JComboBox<ItemClass> jc = new JComboBox<ItemClass>();
jc.addItem(item1);
jc.addItem(item2);
jc.addItem(item3);
所以要返回键,事件的功能是:jc.getSelectedItem().getKey
这样,您必须覆盖类ItemClass的toString()
函数,以返回要在组合框中显示的字符串。
顺便说一下,对于返回号码,您可以尝试:jc.getSelectedIndex()
,它会返回您的字符串索引(0 1 2
的{{1}})
答案 1 :(得分:1)
答案 2 :(得分:1)
将数据包装在一个简单的类中:
class MyData {
int value;
String text;
...
}
现在,您可以通过扩展BasicComboBoxRenderer来编写自己的渲染器。将“值”转换为“MyData”并呈现文本。
public class Bla extends BasicComboBoxRenderer{
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if(value instanceof MyData) {
setText(((MyData) value).getText());
}
return super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
}
}
如果您使用Java7,最好使用像@Taiki这样的泛型。现在,您可以通过jc.getSelectedItem()获取所选对象。它始终来自MyData类型,您可以访问文本(“a”,“b”等)和值(1,2,3等)