[英]Get selected value JList or List in Java Swing, stuck with getElementAt() of ListModel
我正在使用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;
}
我想使用列表绑定我的ArrayList,是否可以为“名称”字段设置“显示文本字段”,为“ id”设置“值字段”? 这样我就可以根据需要检索这些值。 最好的梦想是我可以检索整个选定的“主题”而不是字符串字段。 我看到列表中只有getSelectedValue,如果我想在列表中显示主题,则必须在模型中设置getValueAt()以返回“名称”,而getSelectedValue()也返回所选的“名称” :(如果我在模型类中更改getElementAt()以返回“ Subject”,列表将显示@ object.abxdef
只需重写Subject
toString()
,然后返回您想要在列表中显示的内容。 然后将所有Subject
实例添加到列表中。 无需自定义ListModel
。 只需使用DefaultListModel
。 当您获得选定的Subject
只需使用其中的一种吸气剂即可到达想要的字段。
另外,无需将对象存储在两个位置(即ListModel 和 ArrayList),只需将所有内容添加到模型中即可。
class Subject {
private int id;
private String name;
public Subject(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() { return id; }
public String getName() { return name; }
@Override
public String toString() {
return name;
}
}
DefaultListModel model = new DefaultListModel();
model.addElement(new Subject(1, "Math"));
Subject subject = (Subject)model.getElementAt(0);
System.out.println(subject);
// result -> Math
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.