我有一个组合框,每次选择一个项目时,都会在面板上显示相应的JList,并且JList由文本文件填充。
我的问题是,当我在组合框中的不同项目之间进行选择时,如果前一个列表中有更多元素,比如3,而其他项目只有2,那么第三个项目将保留在列表中并且永远不会消失,除非其他列表包含至少相同数量的元素。
以下是我的代码。
JList list = new JList();
Path Aparts = Paths.get(".\src\assets\acurap.txt");
String[] partList = new String[50];
String temp2 = "";
teamComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
if (teamComboBox.getSelectedItem().equals("Acura")) {
imageLabel.setIcon(acura);
populatedAcurap();
}
}
void populatedAcurap() {
InputStream input;
try {
input = new BufferedInputStream(Files.newInputStream(Aparts));
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
int i = 0;
temp2 = reader.readLine();
while(temp2 != null) {
partList[i] = temp2;
list.setListData(partList);
temp2 = reader.readLine();
i++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:0)
你的阅读方法到处都是......
相反,从文件中读取每个元素并将其添加到新的ListModel
,完成后,将模型应用到JList
,例如......
void populatedAcurap() {
try (BufferedReader reader = new BufferedReader(new FileReader(Files.newInputStream(Aparts)))) {
String temp2 = null;
DefaultListModel model = new DefaultListModel();
while((temp2 = reader.readLine()) != null) {
model.addElement(temp2);
}
list.setModel(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
有关详细信息,请查看: