繁体   English   中英

Java-极端基本的JFileChooser问题

[英]Java - Extremely basic JFileChooser issue

我想制作一个JFileChooser,它允许用户选择任何包含单词“ hello”的文件或目录 即,以下是有效的选择:

C:\hello\
C:\fun\hello.txt
etc.

我该如何工作? 我试过了:

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

        JFileChooser f = new JFileChooser();
        f.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        f.setFileFilter(new FileFilter() {

            public boolean accept(File file) {
                return file.getAbsolutePath().contains("hello");
            }

            public String getDescription() {
                return "hi";
            }

        });
        f.showOpenDialog(this);

但是我的JFileChooser是空白的。 也就是说,我根本看不到C:\\中的文件夹“ fun”。

在此处输入图片说明

我不得不做一些其他的改写。

两个自定义类和一个跑步类。 试试看。

package custom_file_chooser;

import java.io.File;

import javax.swing.filechooser.FileFilter;

public class MyFileFilter extends FileFilter {

    private String filterString;

    public MyFileFilter(String filterString) {
        super();
        this.filterString = filterString;
    }

    @Override
    public boolean accept(File file) {
         return  file.isDirectory() || file.getName().toLowerCase().contains(filterString);
     }

     @Override
     public String getDescription() {
         return filterString + " only";
     }    
}


package custom_file_chooser;

import java.io.File;

import javax.swing.JFileChooser;

public class MyFileChooser extends JFileChooser {

    private String filterString;

    public MyFileChooser(String filterString) {
        super();
        this.filterString = filterString;

        setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        setFileFilter(new MyFileFilter(filterString));
    }

    @Override
    public void approveSelection() {
        File file = this.getSelectedFile();
        if (!file.isDirectory() || file.getName().contains(filterString)) {
            super.approveSelection();           
        }   
    }
}


package custom_file_chooser;

import java.io.File;

import javax.swing.JFileChooser;

public class CustomFileChooserRunner {


    public static void main(String[] args) {

        MyFileChooser f = new MyFileChooser("hello");
        int result;

        result = f.showOpenDialog(null);

        if (result == JFileChooser.APPROVE_OPTION) {
            File file = f.getSelectedFile();
            System.out.println("You chose to open: " +
                    file.getName() + (file.isDirectory() ? " directory" : " file"));
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM