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();
Essayez d'utiliser fileChooser.setFileFilter(filter)
au lieu de fileChooser.addChoosableFileFilter(filter);
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);
}
}
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.
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é.
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();
}