显示模型中的JList元素

时间:2013-03-03 23:23:16

标签: java swing user-interface model jlist

我有一个对象列表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的哪个属性?

2 个答案:

答案 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();
  }
}