FileFilter для JFileChooser

Я хочу ограничить JFileChooser, чтобы выбрать только mp3 файлы. Но следующий код позволяет использовать все типы файлов:

FileFilter filter = new FileNameExtensionFilter("MP3 File","mp3");
fileChooser.addChoosableFileFilter(filter);
fileChooser.showOpenDialog(frame);
File file = fileChooser.getSelectedFile();

Ответ 1

Попробуйте использовать fileChooser.setFileFilter(filter) вместо fileChooser.addChoosableFileFilter(filter);

Ответ 2

Try:

FileFilter filter = new FileNameExtensionFilter("My mp3 description", "mp3");

Первый аргумент - это просто описание FileNameExtensionFilter - и поскольку второй аргумент - var args, вы можете оставить его таким же, как вы, что означает отсутствие фильтра.

Ответ 3

Если вы хотите только файлы mp3:

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class SalutonFrame {

    public static void main(String[] args) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(false);
        FileNameExtensionFilter filter = new FileNameExtensionFilter("MPEG3 songs", "mp3");
        fileChooser.addChoosableFileFilter(filter);
        fileChooser.showOpenDialog(null);

    }
}

Ответ 4

fileChooser.addChoosableFileFilter(filter) добавит настраиваемый фильтр файлов в список фильтров, выбираемых пользователем. По умолчанию список фильтров, выбираемых пользователем, включает фильтр Accept All, который позволяет пользователю видеть все не скрытые файлы.

Вам нужно будет вызвать: fileFilter.setAcceptAllFileFilterUsed(false)

setAcceptAllFileFilterUsed(boolean) определяет, используется ли файл AcceptAll FileFilter как доступный выбор в списке избранных фильтров. Если false, фильтр файлов AcceptAll удаляется из списка доступных фильтров файлов. Если true, фильтр файлов AcceptAll станет активно используемым файловым фильтром.

Ответ 5

Этот фрагмент кода может помочь вам:

JFileChooser jfc=new JFileChooser(System.getProperty("user.dir","."));

FileFilter ff = new FileFilter(){
    public boolean accept(File f){
        if(f.isDirectory()) return true;
        else if(f.getName().endsWith(".mp3")) return true;
            else return false;
    }
    public String getDescription(){
        return "MP3 files";
    }
};

jfc.removeChoosableFileFilter(jfc.getAcceptAllFileFilter());
jfc.setFileFilter(ff);

if(jfc.showDialog(frame,"openG")==JFileChooser.APPROVE_OPTION){
        String fileName = jfc.getSelectedFile().getPath();
}