Art*_*gas 2 java swing key jlist
我有我的JComboBox的解决方案,以获得键/值对的效果,以显示文本,但检索ID,如ID = 2,但文本是"香蕉".
我现在需要将其实现为JList,但是无法从返回的JList中获取Object,以便我可以检索该值.
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")));
Run Code Online (Sandbox Code Playgroud)
但是在这个阶段,如果我这样做
cAktkod.getSelectedValue();
Run Code Online (Sandbox Code Playgroud)
它返回一个Object,我不知道如何让它给我我的ComboItem对象,以便我可以getValue()代替
基本上JList不知道或关心Object的哪个类型(即子类)在列表中.但是,如果你把所有内容放入ComboItem,那么你得到的对象将是一个ComboItem.你只需要将它转换为告诉编译器它是什么类型.
Object selectedObj = cAktkod.getSelectedValue();
if (selectedObj instanceof ComboItem) {
ComboItem selectedItem = (ComboItem) selectedObj;
}
else {
// something has gone wrong!
}
Run Code Online (Sandbox Code Playgroud)
概述了一个简单的解决方案.如果您希望避免将对象转换回其基本类型,则还有另一种方法.
Vector的ComboItem.VectorJList使用VectorVector.elementAt(index)以获取相应的对象.