我有一个对象列表Person (int age, String name)
,这些对象存储在DefaultListModel
中,以便分配给JList
。
DefaultListModel model;
model = new DefaultListModel();
Person p = new Person(43,"Tom");
//insert in the model
model.add(size, p);
jList1.setModel(model);
我只想在JList
中显示名称,但我不知道如何在不使用其他名称列表的情况下(我希望避免使用)。
有没有简单的方法告诉JList
要显示对象Person
的哪个属性?
答案 0 :(得分:3)
视图的显示应该是ListCellRenderer
像...一样的东西。
public class PersonCellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Person) {
setText(((Person)value).getName());
}
return this;
}
}
要将渲染应用于列表,您需要执行...
jList1.setCellRenderer(new PersonCellRenderer());
查看Writing a Custom Cell Renderer了解更多信息
答案 1 :(得分:1)
只需覆盖Person类的toString()方法,即可返回Person的名称
DefaultListModel model;
model = new DefaultListModel();
Person p = new Person(43,"Tom");
//insert in the model
model.add(size, p);
jList1.setModel(model);
public class Person {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public String toString() {
return this.getName();
}
}