0

我正在尝试为我的 JFileChooser 设置文件过滤器。这是我的代码:

JFileChooser picker= new JFileChooser();
picker.setFileFilter(new FileNameExtensionFilter("txt"));
int pickerResult = picker.showOpenDialog(getParent());
if (pickerResult == JFileChooser.APPROVE_OPTION){
System.out.println("This works!");
}
if (pickerResult == JFileChooser.CANCEL_OPTION){
System.exit(1);
}

当我运行我的程序时,文件选择器会出现,但它不会让我选择任何 .txt 文件。相反,它在控制台中这样说:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Extensions must be non-null and not empty

我该如何解决?

4

2 回答 2

1

您需要添加至少一个扩展名作为第二个参数。从 API:

FileNameExtensionFilter(String description, String... extensions) 

Parameters:
description - textual description for the filter, may be null
extensions - the accepted file name extensions
于 2011-02-03T00:18:02.587 回答
0

此外,如果您想要特定的文件扩展名并浏览文件夹,您可以尝试以下操作:

JFileChooser fc = new JFileChooser(path);
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.addChoosableFileFilter(new FileFilter () {

    @Override
    public String getDescription() {
        return "DAT Files";
    }

    @Override
    public boolean accept(File f) {
        if (f.isDirectory())
            return true;
        return f.getName().endsWith(".dat");
    }

});
fc.setAcceptAllFileFilterUsed(false);
于 2015-10-29T15:58:35.290 回答