繁体   English   中英

使用DefaultListModel从ArrayList向JList添加项

[英]Adding items to a JList from ArrayList using 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 ,则添加每个项目的增量,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);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM