我正在尝试将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,而不是添加每个项目的IE,而是添加多个项目。我只是想知道为什么会这样? 最佳答案
如果在更新方法之外定义DefaultListModel
,则它将变为Instance变量,因此对于一个实例将具有相同的值。因此,如果您从同一实例中一遍又一遍地调用此方法,它将仅向现有列表中添加更多值。因此,它显示了多个项目。
注意:声明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);
}
或者您可以尝试从模型中清除之前的值,然后添加新值。