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); }
4 Réponses :
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 code> partie: p>
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 à
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: ci-dessous est mon implémentation d'un fichier fichier. P>
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 code> openfilefilter code> de sorte que fichier.notjpg code> ne soit pas accepté?
Oui je devrais. Merci.
La réponse est simple. Vous pouvez utiliser pas besoin d'utiliser 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> setfilenamefilter code> méthode. Vous pouvez ajouter autant de types de fichiers que vous lesquels. P>
public void actionPerformed(ActionEvent e) {
FileDialog saveFileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
saveFileDialog.setFile("*.jpg;*.jpeg");
saveFileDialog.setVisible(true);
}
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.
commençant par Java 8, vous pouvez une expression lambda: p>
sildialog.setfilenamefilter ((Dir de fichier, nom de chaîne) -> Nom.endswith (". HTML")); Code> P>