web-dev-qa-db-fra.com

FileFilter pour JFileChooser

Je souhaite restreindre un JFileChooser pour sélectionner uniquement les fichiers mp3. Mais, le code suivant autorise tous les types de fichiers:

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

Essayez d'utiliser fileChooser.setFileFilter(filter) au lieu de fileChooser.addChoosableFileFilter(filter);

19
Paul Samsotha

Si vous ne voulez que des fichiers 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);

    }
}
8
Samuel

Essayer:

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

Le premier argument est simplement une description de FileNameExtensionFilter - et puisque le deuxième argument est var args, vous pouvez le laisser comme vous l'avez fait, ce qui signifie en fait qu'il n'y a pas de filtre.

8
Amir Afghani

fileChooser.addChoosableFileFilter(filter) ajoutera un filtre de fichier personnalisé à la liste des filtres sélectionnables par l'utilisateur. Par défaut, la liste des filtres sélectionnables par l'utilisateur comprend le filtre Accepter tout, qui permet à l'utilisateur de voir tous les fichiers non masqués .

Vous devrez invoquer: fileFilter.setAcceptAllFileFilterUsed(false)

La setAcceptAllFileFilterUsed(boolean) détermine si le filtre de fichiers AcceptAll est utilisé comme choix disponible dans la liste de filtres sélectionnable. Si false, le filtre de fichiers AcceptAll est supprimé de la liste des filtres de fichiers disponibles. Si true, le filtre de fichiers AcceptAll deviendra le filtre de fichiers activement utilisé.

4
Sage

Cet extrait de code peut vous aider:

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();
}
2
imanis_tn