java - 单击按钮时的递归搜索文件方法

标签 java swing file jlist

我在 java GUI 应用程序中编写了一个递归搜索方法来查找驱动器中的文件。 用户界面响应灵敏, 搜索成功,但 jlist 未填充,而控制台成功打印文件名,单击 3 次后,文件将添加到 jlist 中,但每个文件的名称重复

 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();

}                             

最佳答案

对搜索方法使用线程或异步任务以避免阻塞 UI

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

搜索完成后,您将更新您的用户界面

关于java - 单击按钮时的递归搜索文件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008297/

相关文章:

java - JBoss Cache 和 Ehcache 的性能

java - 如何在我的 Eclipse 中打印控制台值?

windows - 防止关闭 Java swing 应用程序

jquery - 如何使用 jquery 输入类型文件过滤器分离事件

java - GWT开发模式下发送邮件邮件服务器问题

java - Spring Autowiring 'byName' 不工作

java - 如何在对话框可见时更改对话框的模式

java - JTable 设置列宽不起作用

java - 文件输出流有问题

c - fgets 无法读取换行符