2015-06-23 78 views
0

我已經寫在Java GUI應用程序遞歸搜索方法找到一個驅動器中的文件。 UI響應, 搜索成功發生,但JList的不填充,而控制檯打印成功的文件名,經過3次點擊文件是在JList中添加,但每個文件遞歸searchfile方法點擊

DefaultListModel lm=new DefaultListModel(); 

public void search(String path){ 

    File root = new File(path); 
    File[] list=root.listFiles(); 
    if(list==null){ 
     return; 
    } 
    for(File f: list){ 
    if(f.isDirectory()){ 
     if(list==null){ 
      return; 
     } 
     search(f.getAbsolutePath()); 

    } 
    else{ 
     if(f.getName().endsWith(".txt") && f.getName().startsWith("abc")){ 
      lm.addElement(f.getName()); 

      System.out.println(f.getName()); 

      found=true; 
     } 
    } 

} 
private void formWindowOpened(java.awt.event.WindowEvent evt) {         

    jList1.setModel(lm); 
}  
private void searchBtnActionPerformed(java.awt.event.ActionEvent evt) {           
    //just added this code in my program to resolve unresponsive UI 
    Thread t=new Thread(new Runnable() { 

     @Override 
     public void run() { 
      search("c:\\"); 
     } 
    }); 
    t.start(); 

}        

回答

2

使用一個線程或異步任務的重複名稱對於搜索方法,以避免阻塞UI

https://www3.ntu.edu.sg/home/ehchua/programming/java/J5e_multithreading.html

當搜索結束,那麼你更新你的UI

+0

日Thnx ...,它解決了反應遲鈍UI概率LEM但JList的仍然是空的..... –

+0

@ShaheryarBhatti的代碼更新您的問題或創建一個新的答案,在這裏發佈的鏈接作爲註釋 –

+0

http://stackoverflow.com/questions/31010273/jlist-populates -after-3-clicks-on-searchbtn-with-repeatitve-file-names –