Mac 上的 JFileChooser 没有 return 文件

JFileChooser on Mac doesn't return Files

我尝试使用 JFileChooser 来获得一个 File 数组,它可以包含 .png 或 .svg 数据类型的文件。除此之外,有时 window 不会打开,我没有得到结果。如果我想使用返回的数组,我会得到一个 ArrayIndexOutOfBoundsException。所需的行为是打开 JFrame,您可以 select 一个或多个 .svg 或 .png 数据类型的文件。 select编辑的文件,然后应该保存在数组文件中。

public class DataExplorer {

public static File[] start() {      

    FileFilter filter = new FileNameExtensionFilter("Images ", "png", "svg");
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.addChoosableFileFilter(filter);
    int returnVal = fileChooser.showOpenDialog(null);

    if (returnVal == JFileChooser.APPROVE_OPTION) {
        return fileChooser.getSelectedFiles();
    }

    else {
        System.out.println("Fail");
        return null;
    }
}
}

public static void main(String[] args) throws HeadlessException, Exception {        
    File[] file = start();
    System.out.println(file[0].getPath());

}
return fileChooser.getSelectedFiles();

查看 API 中的 getSelectedFiles() 方法?

它指出:

Returns a list of selected files if the file chooser is set to allow multiple selection.

我没看到你在哪里设置文件选择器以允许多选。

所以我猜如果你不允许多选,数组就没有初始化。

您需要添加:

fileChooser.setMultiSelectionEnabled(true);

这是设置为多选并获取文件的完整示例。

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.showOpenDialog(frame or null);
File[] files = chooser.getSelectedFiles();