0

这是我的代码:

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

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

4

3 回答 3

1

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

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();
      }
于 2013-06-19T10:31:16.127 回答
1

您可以只使用该Jlist#toArray方法来获取列表的数组表示。

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

当然,此时您需要提供 aListCelLRenderer来呈现这些值。

更好的方法是直接使用 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));

查看如何使用列表了解更多详情

于 2013-06-19T10:36:52.103 回答
0
 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);

试试这个

于 2013-06-19T10:25:10.003 回答