9
votes

Comment filtrer le type de fichier dans FileDialog?

J'utilise Filedialog pour sauvegarder et charger dans un programme Java.

Comment puis-je filtrer la liste déroulante pour spécifier le type de fichier "JPG" ou "JPEG", etc.? P>

i ont essayé le code suivant, mais il semble avoir aucun effet. P>

y a-t-il d'autres moyens de faire cela? p>

public void actionPerformed(ActionEvent e) {
            FileDialog saveFileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);

            saveFileDialog.setFilenameFilter(new FilenameFilter(){
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".jpg") || name.endsWith(".jpeg");
                }
            });
            saveFileDialog.setFile("Untitled.jpg");
            saveFileDialog.setVisible(true);
        }


0 commentaires

4 Réponses :


2
votes

Cela ne fonctionne pas pour moi non plus. nom de fichier Les filtres ne fonctionnent pas dans la mise en œuvre de référence de Sun pour Microsoft Windows.

à la place, vous pouvez essayer le code ci-dessous. Vous devez également supprimer le setfilenamefilter partie: xxx


4 commentaires

Il définit simplement le nom de sauvegarde par défaut du fichier, mais cela ne change rien dans la liste déroulante ...


Oui, mais cela fonctionne parce que cela ne vous permet pas de voir des fichiers avec d'autres extensions.


Ce que je veux, c'est qu'il existe des alternatives que je peux spécifier le contenu de la liste déroulante?


«Les filtres de nom de fichier ne fonctionnent pas dans la mise en œuvre de référence de Sun pour Microsoft Windows». Veuillez vous reporter à ici



2
votes

J'ai toujours utilisé Jfilechooser au lieu de Filedialog. Vous pouvez ensuite ajouter plusieurs choisisseurs de choix pour les différents types de votre programme prendre en charge de cette manière: xxx

ci-dessous est mon implémentation d'un fichier fichier. xxx


3 commentaires

Ok ... j'ai pris ma décision d'utiliser cette approche ... merci beaucoup ~


Ne devriez-vous pas inclure la période de l'argument de l'extension au constructeur openfilefilter de sorte que fichier.notjpg ne soit pas accepté?


Oui je devrais. Merci.



12
votes

La réponse est simple. Vous pouvez utiliser xxx pré>

pas besoin d'utiliser setfilenamefilter code> méthode. Vous pouvez ajouter autant de types de fichiers que vous lesquels. P>

La résolution de ce problème peut être trouvée dans Huxhorn Strong> de la commentaires de Huxhf = "http: //bugs.sun .com / bugdatabase / vue_bug.do? bug_id = 4031440 "rel =" NOREFERRER "> ID de bogue: 4031440 Filedialog n'appelle pas Filenamefilter.accept () . P>

public void actionPerformed(ActionEvent e) {
            FileDialog saveFileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
            saveFileDialog.setFile("*.jpg;*.jpeg");
            saveFileDialog.setVisible(true);
        }


2 commentaires

Il semble que l'on puisse au plus utiliser deux chaînes de type. Essayez d'utiliser cinq et le getfile retournera une mauvaise information après la sélection.


Selon le message, Stackoverflow.com/questions/14972664 , ce que je me suis plaint est un bogue dans JDK 7.



-1
votes

commençant par Java 8, vous pouvez une expression lambda:

sildialog.setfilenamefilter ((Dir de fichier, nom de chaîne) -> Nom.endswith (". HTML"));


0 commentaires