文件选择器(Swing)

时间:2016-06-10 08:36:05

标签: java swing

我实现了一个按钮,用户单击此按钮,弹出文件选择器,用户可以选择文件,但是当他更改自己的首选项时,程序始终会理解第一个文件。

我通过写下size()方法找到了这个bug。首先,用户选择了大小为20的设备列表,在用另一个大小为100的列表更改此文档后,我预计会看到100大小,但我仍然看到20。

chooser = new JButton("Choose Device List");
        chooser.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {
                JFileChooser fileopen = new JFileChooser();
                FileFilter filter = new FileNameExtensionFilter("csv files", "csv");
                fileopen.addChoosableFileFilter(filter);

                int ret = fileopen.showDialog(null, "Open file");

                if (ret == JFileChooser.APPROVE_OPTION) {
                 try {
                    DeviceHelper.loadDevices(fileopen.getSelectedFile());
                    int size = DeviceHelper.loadDevices(fileopen.getSelectedFile()).size();
                    System.out.println("Size of the program " + size);


                } catch (IOException e) {


                }

                }

            }
        });

我该如何解决这个问题?有人可以帮助我吗?

编辑:

 public static List<String> loadDevices(File file2) throws IOException {

if (deviceAdresses == null) {

  deviceAdresses = new ArrayList<>();

try (BufferedReader reader = new BufferedReader(new FileReader(file2))) {

    String line = null;
    while ((line = reader.readLine()) != null) {
      if (line.trim().length() > 0) {
        deviceAdresses.add(line);
      }
    }

  }

}



return new ArrayList<String>(deviceAdresses);

}

1 个答案:

答案 0 :(得分:2)

删除此项检查:

if (deviceAdresses == null) {

初始化deviceAdresses后发生的情况,此检查将始终为false,并且永远不会读取新文件中的行。