使用Applet显示JList中列表的所有值

时间:2013-06-19 10:19:06

标签: java swing applet jlist defaultlistmodel

这是我的代码:

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

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

3 个答案:

答案 0 :(得分:1)

您正在使用String variable而不是array of String,因此在循环迭代时,它会在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();
      }

答案 1 :(得分:1)

您可以使用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));

查看How to use lists了解详情

答案 2 :(得分: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);

试试这个