Как отловить FileNameExtensionFilter и сделать для них логику? - PullRequest
0 голосов
/ 22 января 2019

У меня есть JFileChooser и добавлен 2 фильтра расширений файлов, например:

openFileChooser = new JFileChooser();
openFileChooser.setCurrentDirectory(new File("D:/"));
openFileChooser.setFileFilter(new FileNameExtensionFilter("OUT Files", "out"));
openFileChooser.setFileFilter(new FileNameExtensionFilter("PRN Files", "prn"));

Если у меня есть файлы .out, моя логика работает, но когда я выбираю файлы .prn, логика для файлов .out работает дляфайлы .prn.Мой вопрос заключается в том, как поймать, какой тип и с помощью if (.out файлы) -> сделать что-то еще (.prn файлы) -> что-то сделать?

1 Ответ

0 голосов
/ 22 января 2019

Я не могу ясно понять ваш вопрос / проблему, поэтому я собираюсь дать вам образец средства выбора файлов с 2 фильтрами, которые могут вам помочь. Следующий JFileChooser позволяет пользователю выбирать только файлы Mp3 и Mp4 (в вашем случае файлы .out / .prn?). Прочитайте комментарии внутри кода.

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class FileChooserExample {
    public static void main(String[] args) {
        String home = System.getProperty("user.home");
        File desktop = new File(home, "Desktop");
        JFileChooser chooser = new JFileChooser(desktop);
        // Add filter for mp3 files.
        chooser.addChoosableFileFilter(new FileFilter() {

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

            @Override
            public boolean accept(File f) {
                // Show only mp3 Files(which can be selected) and folders (which can be OPENED)
                return isMp3(f) || f.isDirectory();
            }
        });
        // Add filter for mp4 files.
        chooser.addChoosableFileFilter(new FileFilter() {

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

            @Override
            public boolean accept(File f) {
                // Show only mp4 Files(which can be selected) and folders (which can be OPENED)
                return isMp4(f) || f.isDirectory();
            }
        });
        // Only files allowed. If it is a directory, do not select it but open it to
        // choose files
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        // Remove the "All files" filter. We want only our custom file filters to take
        // action.
        chooser.setAcceptAllFileFilterUsed(false);
        if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File selectedFile = chooser.getSelectedFile();
            if (isMp3(selectedFile)) {
                System.out.println("This is an mp3 file, and i wanna dance.");
            } else if (isMp4(selectedFile)) {
                System.out.println("This is an mp4 file, and i wanna grab pop corn.");
            }
        }
    }

    private static boolean isMp4(File f) {
        return f.getName().toLowerCase().endsWith(".mp4");
    }

    private static boolean isMp3(File f) {
        return f.getName().toLowerCase().endsWith(".mp3");
    }
}
...