文件选择器(Swing)
问题描述:
我实现了一个按钮,用户单击此按钮并弹出文件选择器,然后用户可以选择文件,但是当他更改其偏好时,程序始终会理解第一个文件。文件选择器(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);
}
答
删除此检查:
if (deviceAdresses == null) {
正在发生的事情,一旦deviceAdresses
被初始化,这个检查将永远是假的,来自新文件的行会永远不会被阅读。
+0
现在它工作=] – limonik
'DeviceHelper.loadDevices'做什么?它返回一个List?这似乎仍然是大小为20 –
向我们显示'DeviceHelper.loadDevices(File arg)'方法的代码。 – Azodious
看起来,你对类DeviceHelper有一个问题,它不是一个标准的java类。要获得帮助,您需要提供仅使用标准Java类的[SSCCE](http://sscce.org)。 –