2016-06-10 75 views
0

我實現了一個按鈕,用戶單擊此按鈕並彈出文件選擇器,然後用戶可以選擇文件,但是當他更改其偏好時,程序始終會理解第一個文件。文件選擇器(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); 

}

+0

'DeviceHelper.loadDevices'做什麼?它返回一個List?這似乎仍然是大小爲20 –

+0

向我們顯示'DeviceHelper.loadDevices(File arg)'方法的代碼。 – Azodious

+2

看起來,你對類DeviceHelper有一個問題,它不是一個標準的java類。要獲得幫助,您需要提供僅使用標準Java類的[SSCCE](http://sscce.org)。 –

回答

2

刪除此檢查:

if (deviceAdresses == null) { 

正在發生的事情,一旦deviceAdresses被初始化,這個檢查將永遠是假的,來自新文件的行會永遠不會被閱讀。

+0

現在它工作=] – limonik