0

に割り当てられる にPerson (int age, String name)格納されているオブジェクトのリストがあります。DefaultListModelJList

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を表示するかを簡単に知る方法はありますか?

4

2 に答える 2

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());

詳細については、カスタムセルレンダラーの作成を参照してください。

于 2013-03-03T23:35:46.430 に答える
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();
  }
}
于 2013-06-05T18:41:06.573 に答える