10
votes

Comment puis-je faire des annuaires Java Filedialog ACCEPTER LE FileType dans OS X?

J'essaie de passer de l'utilisation d'un jfilechooser à un fichier Filedialog lorsque mon application est exécutée sur un Mac afin d'utiliser le sélecteur de fichiers OS X. Jusqu'à présent, j'ai le code suivant: xxx

Que ferais-je pour la question? Donc, que mon fichier de fichiers permettrait à n'importe quel répertoire d'être l'entrée du choix de fichiers (la méthode suivante vérifie déjà pour vous assurer que le répertoire est le bon type de répertoire, je souhaite simplement utiliser FileDialog pour accepter n'importe quel répertoire).


0 commentaires

3 Réponses :


11
votes

En supposant que vous êtes déterminé à utiliser le fichier Filedialog au lieu du fichier jfilechooser portable, vous devez définir la propriété système afin que les fichiers filédiens créés soient pour les répertoires.

La propriété en question est Apple.awt.filedialogfordIrectories code> . P> P> P> P> Alors faites simplement ce qui suit: p>

System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog fd = new FileDialog(this); 
fd.setDirectory(_projectsBaseDir.getPath()); 
fd.setLocation(50,50);
fd.setVisible(true); 
File selectedFile = new File(fd.getFile());
System.setProperty("apple.awt.fileDialogForDirectories", "false");


1 commentaires

Y a-t-il un équivalent pour Windows?



1
votes

J'essaie de passer d'utiliser un Jfilechooser à un fichier Filedialog lorsque mon application est en cours d'exécution sur un Mac afin d'utiliser le choeur de fichier OSX

Je suggérerais que vous essayez de rester dans le monde siforcial et de craindre le monde de poids lourd de l'AWT. Il existe des moyens de contourner des problèmes avec le swing L & F sur Mac, si c'est ce que votre problème est. Jetez un coup d'œil à Cet article sur une question antérieure , qui relie un site qui montre Comment obtenir les icônes MAC correctes dans le sélecteur de fichiers.

Excusez-moi pour ne pas répondre exactement à votre question. S'il y a d'autres raisons pour lesquelles vous préférez rester avec Filedialog , je vais volontiers supprimer ce post.


1 commentaires

Je suis d'accord - le jfiloechooser est une bien meilleure option et sa question ressemble davantage à un problème de L & F que toute autre chose.



0
votes

Après avoir utilisé la solution la plus populaire pendant le moment:

try {
    Process process = Runtime.getRuntime().exec(new String[]{//
        "/usr/bin/osascript", //
        "-e", //
        "set selectedFolder to choose folder\n"//
        + "return POSIX path of selectedFolder"
    });
    int result = process.waitFor();
    if (result == 0) {
        String selectedFolder = new BufferedReader(new InputStreamReader(process.getInputStream())).readLine();
        return new File(selectedFolder);
    }
} catch (Exception ex) {
}

return null;


0 commentaires