使用 DefaultListModel 从 ArrayList 将项添加到 JList



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

如果您在更新方法之外定义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);
}

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

相关内容

  • 没有找到相关文章

最新更新