Java Swing JList的键值对
我的JComboBox有这样一个解决方案,可以获得键/值对的效果,显示文本,但检索ID,比如ID=2,但文本是“香蕉” 我现在需要将其实现到JList,但是很难从返回的JList中获取对象,以便检索值Java Swing JList的键值对,java,swing,key,jlist,Java,Swing,Key,Jlist,我的JComboBox有这样一个解决方案,可以获得键/值对的效果,显示文本,但检索ID,比如ID=2,但文本是“香蕉” 我现在需要将其实现到JList,但是很难从返回的JList中获取对象,以便检索值 public class ComboItem { private String value; private String label; public ComboItem(String value, String label) { this.value
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;
}
}
DefaultListModel listmodel = new DefaultListModel();
JList cAktkod = new JList(listmodel);
int pos = cAktkod.getModel().getSize();
listmodel.add(pos, new ComboItem(resultSet.getString("MMCFI5"),resultSet.getString("CTTX40")));
但在这个阶段,如果我这样做
cAktkod.getSelectedValue();
它返回一个对象,我不知道如何让它给我ComboItem对象,这样我就可以取而代之的是getValue()基本上JList不知道或不关心列表中对象的类型(即子类)。但是,如果您在列表中输入的都是ComboItem,那么您输出的对象将是ComboItem。您只需要强制转换它来告诉编译器它是什么类型
Object selectedObj = cAktkod.getSelectedValue();
if (selectedObj instanceof ComboItem) {
ComboItem selectedItem = (ComboItem) selectedObj;
}
else {
// something has gone wrong!
}
mre概述了一个简单的解决方案。如果希望避免将对象强制转换回其基本类型,则有另一种方法
- 创建
的通用组合项
向量
- 添加
向量的每一项
- 使用
向量创建
JList
- 选择时,获取所选索引,然后调用
获取相应的对象Vector.elementAt(index)