Как ограничить выбор файлов в java конкретными файлами

private void openMenuActionPerformed(java.awt.event.ActionEvent evt) {

    DBmanager db = new DBmanager();
    if (!db.getCurrentUser().equals("Admin")) {
        JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications");
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
        fileChooser.setAcceptAllFileFilterUsed(false);
        int returnVal = fileChooser.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();

            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    } else if (db.getCurrentUser().equals("Admin")) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(true);
        int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }// TODO add your handling code here:
}

Привет, ребята.... Я пытаюсь фильтровать файлы в файловом фильтре, установив fileChooser.setAcceptAllFileFilterUsed(false);. Опция "все файлы" исчезает из FileChooser, но все файлы остаются видимыми, если вы не выберите вариант из документов PDF, ms Office или images.Я хочу иметь только 3 пользовательских фильтра при открытии выбора файла.

Ответ 1

Например, если вы хотите отфильтровать JFileChooser, чтобы строго отображать наиболее часто используемые файлы изображений, вы должны использовать что-то вроде этого:

FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);

Первый аргумент - это описание (что отображается при выборе внизу), а второй аргумент - это неформальные расширения файлов.

Ответ 2

Вы можете использовать FileNameExtensionFilter для добавления разрешенных расширений в диалоговом окне FileChooser. Вот пример:

JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
    "JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);

Для получения дополнительной информации см. Javadocs: FileNameExtensionFilter

Ответ 3

В моем случае мне пришлось поставить

setFileFilter(          
    new FileNameExtensionFilter("Default file filter", ...)
);

после всех других вызовов метода

addChoosableFileFilter(...);

чтобы сделать setAcceptAllFileFilterUsed (false) работает.

Ответ 4

Это отлично работает в java8.1

JFileChooser dbfilechooser = new JFileChooser();
                FileNameExtensionFilter filter1 = 
                        new FileNameExtensionFilter("xls","xls");
                FileNameExtensionFilter filter2 = 
                        new FileNameExtensionFilter("xlsx", "xlsx");
                FileNameExtensionFilter filter3 = 
                        new FileNameExtensionFilter("csv", "csv");

               dbfilechooser.addChoosableFileFilter(filter1);
               dbfilechooser.addChoosableFileFilter(filter2);
               dbfilechooser.addChoosableFileFilter(filter3);