我需要在 jList
上保存来自特定源的多个值。
在 for 循环中,我为上面代码中声明的 Jlist
生成一个 jComboBox
和 bot 一个 Model
(因此在此不可见)一段代码)
我不明白,也许这是一个简单的问题,为什么 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);
}
最佳答案
每次调用printChannelData()
(可能在某个循环中)时,都会重新创建ListModel
。在外部创建 ListModel
,并在方法内部添加到模型中。
并且channelId
是一个String[]
,但只包含一项。我不知道你想用它做什么。
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);
}
关于java - 向 JList 添加多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912305/