使用小程序在JList中显示列表的所有值



这是我的代码:

     private static final long serialVersionUID = 1L;
  /* The data as a list of Persons.
  */
  private static List<PersonModel> personData = new ArrayList<PersonModel>();
  public static JList<PersonModel> jlist;

  public void init() {
      // Add some sample data
      personData.add(new PersonModel("Hans", "Muster"));
      personData.add(new PersonModel("Ruth", "Mueller"));
      personData.add(new PersonModel("Heinz", "Kurz"));
      personData.add(new PersonModel("Cornelia", "Meier"));
      personData.add(new PersonModel("Werner", "Meyer"));
      personData.add(new PersonModel("Lydia", "Kunz"));
      personData.add(new PersonModel("Anna", "Best"));
      personData.add(new PersonModel("Stefan", "Meier"));
      personData.add(new PersonModel("Martin", "Mueller"));
      String dataQ = " ";

      for(int i = 0; i < personData.size(); i++){
            dataQ = personData.get(i).getLastName() + " " + personData.get(i).getFirstName();
      }
      String[] arr = new String[] { dataQ };
      jlist = new JList(arr);

但它只显示最后一条记录。如何显示所有记录/值?有什么想法吗?谢谢。

你使用的是String variable而不是array of String,所以在循环迭代时,它是在dataQ variable中存储Arraylist personData的最后一个值。试试这个,

int size=personData.size();//get size of personData
String dataQ[]=new String[size];//change String dataQ to dataQ[]; 
 for(int i = 0; i < personData.size(); i++)
      {
            dataQ[i] = personData.get(i).getLastName() + " " + personData.get(i).getFirstName();
      }
您可以使用

Jlist#toArray 方法来获取列表的数组表示形式。

jList = new JList(personData.toArray(new PersonModel[personData.size()]);

当然,此时需要提供一个ListCelLRenderer来呈现值。

更好的方法是直接使用 ListModel。 像...

public class PersonListModel extends AbstractListModel<PersonModel>{
    private List<PersonModel> people;
    public PersonListModel(List<PersonModel> people) {
        this.people = people;
    }
    @Override
    public int getSize() {
        return people.size();
    }
    @Override
    public PersonModel getElementAt(int index) {
        return people.get(index);
    }
}

然后你可以做...

JList jList = new JList(new PersonListModel(personData));

查看如何使用列表了解更多详细信息

 String[] arr = new String[]; 
for(int i = 0; i < personData.size(); i++){
            dataQ = personData.get(i).getLastName() + " " + personData.get(i).getFirstName();
arr [i] = dataQ;
      }
      jlist = new JList(arr);

试试这个

相关内容

  • 没有找到相关文章

最新更新