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();
我尝试使用 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();