Добавление элементов в JList из ArrayList с помощью DefaultListModel
Я пытаюсь добавить элементы, которые находятся в ArrayList
до JList
, который работает, когда я использую следующий код:
private void UpdateJList(){
DefaultListModel<String> model = new DefaultListModel<String>();
for(Person p : personList){
model.addElement(p.ToString());
}
clientJList.setModel(model);
clientJList.setSelectedIndex(0);
}
однако, если я объявлю DefaultListModel
вне метода добавление увеличивает каждый элемент, т. е. вместо добавления одного из каждого элемента он добавляет несколько элементов. Мне просто интересно, почему это происходит?
1 ответов
Если вы определите DefaultListModel
вне вашего метода обновления он становится переменная так он будет иметь одинаковое значение для одного экземпляра. Таким образом, если вы вызываете этот метод снова и снова из одного экземпляра, он просто добавит больше значений в существующий список. Таким образом он показывает несколько элементов.
Примечание объявление DefaultListModel
внешняя функция не вызывает никаких проблем,что делает ее объект внешней функцией. Вы можете сделать следующее без каких-либо проблема :
DefaultListModel<String> model;
private void UpdateJList(){
model = new DefaultListModel<String>();
for(Person p : personList){
model.addElement(p.ToString());
}
clientJList.setModel(model);
clientJList.setSelectedIndex(0);
}
или вы можете попробовать очистить предыдущие значения из модели, а затем добавить новые значения.