我正在尝试将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
,则添加会增加每个项目,IE而不是添加每个项目之一,它会添加多个项目。我只是想知道为什么会这样?
答案 0 :(得分:16)
如果您在更新方法之外定义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);
}
或者您可以尝试清除模型中的先前值,然后添加新值。