繁体   English   中英

显示模型中的JList元素

[英]Display JList elements from model

我有一个存储在DefaultListModel中的要分配给JList的Objects Person (int age, String name)列表。

DefaultListModel model;
model = new DefaultListModel();

Person p = new Person(43,"Tom");
//insert in the model
model.add(size, p);

jList1.setModel(model);

我只想在JList显示名称,但是如果不使用另一个Names列表(我希望避免使用该列表),就无法解决该问题。

有什么简单的方法告诉JList要显示对象Person哪个属性?

视图的显示应该是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());

有关更多信息,请看编写自定义单元格渲染器

只需重写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();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM