JFileChooser на Mac не возвращает файлы - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь использовать JFileChooser, чтобы получить массив File, который может содержать файлы с типом данных .png или .svg.Кроме того, иногда окно не открывается, я не получаю результат.Если я хочу работать с возвращенным массивом, я получаю ArrayIndexOutOfBoundsException.Желаемое поведение заключается в том, что откроется JFrame, и вы можете выбрать один или несколько файлов из типов данных .svg или .png.Выбранные файлы затем должны быть сохранены в файлах Array.

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

}

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Вот полный пример настройки множественного выбора и получения файлов.

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.showOpenDialog(frame or null);
File[] files = chooser.getSelectedFiles();
0 голосов
/ 23 октября 2018
return fileChooser.getSelectedFiles();

Проверить API для метода getSelectedFiles()?

В нем говорится:

Возвращает список выбранных файлов, если для выбора файлов задано несколькоselection.

Я не вижу, где вы устанавливаете средство выбора файлов, чтобы разрешить множественный выбор.

Так что я предполагаю, что массив не инициализируется, если вы не разрешаетемножественный выбор.

Вам необходимо добавить:

fileChooser.setMultiSelectionEnabled(true);
...