我实现了一个按钮,用户单击此按钮,会弹出文件选择器,用户可以选择文件,但是当他更改首选项时,程序始终会理解第一个文件。
我通过写下 size() 方法发现了这个错误。首先,用户选择了大小为 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);
}
最佳答案
删除此检查:
if (deviceAdresses == null) {
一旦 deviceAdresses
初始化,此检查将始终为 false,并且永远不会读取新文件中的行。
关于java - 文件选择器(Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743632/