web-dev-qa-db-fra.com

JavaFX FileChooser

J'ai rencontré un petit problème avec JavaFX. J'ai essayé de faire un choix de fichier dans mon code où je peux pointer sur un DOSSIER au lieu d'un fichier. Actuellement, je n'ai pas de solution. Connaissez-vous une solution de contournement (sauf en utilisant JFileChooser de swing)?

Merci beaucoup pour les réponses à l'avance

edit: j'ai déjà obtenu une réponse, essayant de la tester, mais j'ai oublié de mentionner la version de JavaFX. Il s'agit de la dernière version 2.0.3 stable ici, sortie il y a quelques jours (mais le premier non-beta 2.0 et 2.0.1 avait également ce problème)

56
newhouse

Un DirectoryChooser a été ajouté à JavaFX dans le cadre de la version 2.1 . L'utilisation est:

DirectoryChooser chooser = new DirectoryChooser();
chooser.setTitle("JavaFX Projects");
File defaultDirectory = new File("c:/dev/javafx");
chooser.setInitialDirectory(defaultDirectory);
File selectedDirectory = chooser.showDialog(primaryStage);

issue tracker mentionne une solution de contournement pour la version 2.0GA: "accès à la méthode privée Oracle API Glass CommonDialogs.showFolderChooser ".

110
jewelsea

Contrairement à swing où JFileChooser était utilisé pour sélectionner des dossiers et des fichiers individuels, dans javafx, il existe une classe FileChooser qui est utilisée pour choisir des fichiers individuels et une classe DirectoryChooser pour sélectionner un répertoire

    DirectoryChooser directoryChooser = new DirectoryChooser();
    directoryChooser.setTitle("Open Resource File");
    directoryChooser.getExtensionFilters().addAll(
    new ExtensionFilter("Text Files", "*.txt"),
    new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"),
    new ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"),
    new ExtensionFilter("All Files", "*.*"));
    File selectedFile = directoryChooser.showDialog(mainStage);
    if (selectedFile != null) {
          mainStage.display(selectedFile);
    }

est un exemple de sélecteur de répertoire.

    FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("Open Folder");
    fileChooser.showDialog(stage);

est un exemple de sélecteur de fichiers

3
Emmanuel Ogoma