这是我的代码:
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);
试试这个