在Java Swing中获取选定值JList或List,卡在ListModel的getElementAt()中

时间:2014-09-06 15:57:37

标签: java swing jlist defaultlistmodel list.selectedvalue

我使用Swing List控件绑定数据,我(必须)使用类来制作模型

public class SubjectListModel extends AbstractListModel<String> {

public ArrayList<Subject> listSubjects;

public SubjectListModel(ArrayList<Subject> listSubjects) {
    this.listSubjects = listSubjects;
}

@Override
public int getSize() {
    return listSubjects.size();
}

@Override
public String getElementAt(int index) {
    return listSubjects.get(index).name;
}
 class Subject{
 int id;
string name;
}

我希望使用List绑定我的ArrayList,我可以为“name”字段设置“display text field”,为“id”设置“value field”吗?这样我就可以根据需要检索这些值。 最好的梦想是我可以检索整个选定的“主题”而不是字符串字段。 我看到列表只有getSelectedValue,如果我想在List中显示主题,我必须在模型中设置getValueAt()以返回“name”,并且getSelectedValue()也返回所选的“名称”:(如果我更改模型类中的getElementAt()以返回“Subject”,列表将显示@ object.abxdef

1 个答案:

答案 0 :(得分:2)

只需覆盖toString()的{​​{1}},然后返回您希望在列表中显示的内容。然后将所有Subject实例添加到列表中。无需自定义Subject。只需使用DefaultListModel。当您获得所选的ListModel时,只需使用其中一个获取者到您想要的字段。

也无需将对象存储在两个位置(即ListModel ArrayList)只需将所有内容添加到模型中。

Subject