我使用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
答案 0 :(得分:2)
只需覆盖toString()
的{{1}},然后返回您希望在列表中显示的内容。然后将所有Subject
实例添加到列表中。无需自定义Subject
。只需使用DefaultListModel
。当您获得所选的ListModel
时,只需使用其中一个获取者到您想要的字段。
也无需将对象存储在两个位置(即ListModel 和 ArrayList)只需将所有内容添加到模型中。
Subject