将多个元素添加到JList

时间:2013-09-20 08:39:33

标签: java swing jcombobox jlist

我需要保存来自特定来源的jList多个值。

在for循环中,我为代码中声明的jComboBox生成Model和bot Jlist(因此在这段代码中不可见) 我不明白,也许这是一个简单的问题,这就是为什么jComboBox包含从数组channelId中获取的所有元素而不是Jlist只保存最后一个元素。

DefaultListModel jList1Model;
private void printChannelData(Channel channel, String nodeName) {   
    String[] channelId = { channel.getId()+" - "+nodeName/*+" - "+channel.getName()*/};
    jList1Model = new DefaultListModel();

    for (int i=0; i < channelId.length; i++) {
        //Adds element to the Single Channel Loading ComboBox
        channelIdComboBox.addItem(channelId[i]);
        //Adds elements to the Multiple Channel Loading ComboBox
        jList1Model.addElement(channelId[i]); 

    }
    jList1.setModel(jList1Model);   
}   

1 个答案:

答案 0 :(得分:2)

每次调用ListModel时都可以重新创建printChannelData()(可能在某个循环中)。在外部创建ListModel,在方法内部添加到模型中。

channelIdString[],但只包含一个项目。我不知道你试图用它做什么。

DefaultListModel<String> jList1Model = new DefaultListModel<>();

// probably a loop where you call printChannelData()
List<ChannelData> channels = ...;
for (ChannelData cd : channels) {
    printChannelData(cd, "whatever");
}


private void printChannelData(Channel channel, String nodeName) {   
    String channelId = channel.getId() + " - " + nodeName + " - " + channel.getName();
    for (int i=0; i < channelId.length; i++) {
        //Adds element to the Single Channel Loading ComboBox
        channelIdComboBox.addItem(channelId[i]);
        //Adds elements to the Multiple Channel Loading ComboBox
        jList1Model.addElement(channelId[i]); 
    }
    jList1.setModel(jList1Model);   
}