2017-03-15 41 views
0

enter image description here填充從文本文件的JList通過按鈕讀取

代碼:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

JFileChooser fileChooser = new JFileChooser(); 
//fileChooser.setCurrentDirectory(new  File(System.getProperty("user.home"))); 
int result = fileChooser.showOpenDialog(this); 
if (result == JFileChooser.APPROVE_OPTION) 

{ 
File selectedFile = fileChooser.getSelectedFile(); 
System.out.println("Selected file: " + selectedFile.getAbsolutePath()); 
DefaultListModel lista = new DefaultListModel(); 
JList jList1 = new JList(); 

try { 
     FileReader archivo = new  FileReader(selectedFile.getAbsolutePath()); 
     BufferedReader lector = new BufferedReader(archivo); 
     String texto = null; 
     while ((texto = lector.readLine()) != null) { 
      lista.addElement(texto); 
      //System.out.println("Lista:"+lista); 
      //System.out.println(texto); 
     } 

     jList1.setModel(lista); 
     System.out.println("jList1:"+jList1); 

    } 

catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

catch (IOException e) { 
     e.printStackTrace(); 
    } 

}  

}           

我試圖填充從通過READ_FILE按鈕讀取文本文件的JList

我能取文件路徑和正確的文件的內容,我用打印語句進行了驗證,但我的jlist仍然是空的。 在設計中,我檢查了jlist的變量名稱,這兩個名稱都與我在代碼中使用的名稱相匹配。

請給我建議的錯誤。

回答

0

從我看到你每次按下按鈕時創建一個新的JList。您確實填寫了DefaultListModel,但您將其分配給某個jList,而不是您在UI上的那個。

就明確行:

JList jList1 = new JList(); 

然後repaintrevalidate它的容器後setModel

+0

換句話說,你可以填充的jList1,但它是一個你永遠不會放回到一個局部變量'JPanel' ..列表沒問題,你不顯示它。最好的情況是在你的用戶界面上有一個Jlist對象,每當你點擊按鈕更新它的模型。無需刪除整個列表。 – gvlachakis

+0

我編輯我的答案 – gvlachakis

+0

你已經完全正確地做了所有事情,但是你沒有提出。你創建一個JList1,你填寫它,但是你沒有放在UI上。第一步:在您的用戶界面上添加一個jlist,並回答我所稱的問題。 – gvlachakis