Выбор мультитипа в JFileChooser

Мой код:

JFileChooser dialog = new JFileChooser();
dialog.showOpenDialog(rootPane);
dialog.setMultiSelectionEnabled(true);
dialog.setFileFilter(new FileFilter() {

    @Override
    public String getDescription() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean accept(File arg0) {
        return arg0.getAbsolutePath().endsWith("png")||
                arg0.getAbsolutePath().endsWith("jpg");
    }
});
File[] file = dialog.getSelectedFiles();

Когда программа запущена, я не могу выбрать более 1 файла.

введите здесь описание изображения


person Shayan D    schedule 01.05.2016    source источник
comment
Создайте и опубликуйте небольшую, но простую полную программу, иллюстрирующую вашу проблему, MCVE. Пожалуйста, проверьте ссылку для получения подробной информации об этом очень полезном инструменте.   -  person Hovercraft Full Of Eels    schedule 01.05.2016


Ответы (2)


вы должны включить MultiSelection, прежде чем открывать диалоговое окно.

dialog.setMultiSelectionEnabled(true);  
dialog.showOpenDialog(rootPane);

то же самое для настройки файлового фильтра.

JFileChooser dialog = new JFileChooser();
dialog.setMultiSelectionEnabled(true);
dialog.setFileFilter(new FileFilter() {

    @Override
    public String getDescription() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean accept(File arg0) {
        return arg0.getAbsolutePath().endsWith("png")
                || arg0.getAbsolutePath().endsWith("jpg");
    }

});
dialog.showOpenDialog(rootPane);//open it last
File[] file = dialog.getSelectedFiles();
person Madhawa Priyashantha    schedule 01.05.2016

Вам нужно переместить dialog.setMultiSelectionEnabled(true); над dialog.showOpenDialog(rootPane);, чтобы это сработало. Также, если вам не нужно описание, вы можете упростить код, как показано ниже. Надеюсь это поможет.

`JFileChooser dialog = new JFileChooser();
 dialog.setMultiSelectionEnabled(true);
 dialog.showOpenDialog(null);
 dialog.addChoosableFileFilter(new FileNameExtensionFilter("pngFilter", "png"));
 dialog.addChoosableFileFilter(new FileNameExtensionFilter("jpgFilter", "jpg"));
 File[] file = dialog.getSelectedFiles();`
person Nate    schedule 01.05.2016