繁体   English   中英

如何清除Jlist

[英]How to clear a Jlist

我有一个组合框,每次选择一个项目时,面板上都会显示一个相应的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();
    }
}

您的阅读方法无处不在...

  • 您一直在读入一个预先存在的数组,但是您从未从中删除任何内容...因此它包含旧数据...
  • 在不知道实际需要多少行的情况下读入数组是很危险的。
  • 您不会关闭资源...

而是从文件中读取每个元素并将其添加到新的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();
    }
}

有关更多详细信息,请查看:

暂无
暂无

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

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