7

当我使用以下代码时,我正在尝试添加正在工作的项目ArrayListJList

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 不是每个项目添加一个,而是添加多个项目。我只是想知道为什么会这样?

4

1 回答 1

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

或者您可以尝试从模型中清除以前的值,然后添加新值。

于 2011-11-24T08:13:22.020 回答