2012-02-21 76 views
44

Me encontré con un pequeño problema ahora con JavaFX. Traté de hacer una selección de archivos en mi código donde puedo señalar una CARPETA en lugar de un archivo. Actualmente no tengo una solución para eso. ¿Conoce una solución (excepto que usa JFileChooser desde swing)?JavaFX FileChooser

Muchas gracias por las respuestas de antemano

edición: Ya tengo ahora una respuesta, tratando de probarlo, pero se me olvidó mencionar la versión de JavaFX. Es la última 2.0.3 estable aquí, lanzada hace unos días (pero la versión no 2.0 y la 2.0.1 iniciales también tenían este problema)

Respuesta

86

Se agregó un DirectoryChooser a JavaFX como parte de the 2.1 release. uso es:

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

El issue tracker menciona un trabajo en torno a la liberación 2.0GA: "el acceso a la API de Oracle método privado de cristal CommonDialogs.showFolderChooser".

+2

"No se puede ver esta URL como invitado. Usted debe conectarse o registrarse para obtener una cuenta." – XXL

+2

Haga clic en el enlace de registro en el [rastreador Jira JavaFX] (http://javafx-jira.kenai.com/) para registrarse en una cuenta: es un sistema abierto, cualquiera puede registrarse para obtener una cuenta. – jewelsea

+1

La política cambió hace un par de meses y el rastreador JavaFX Jira ya no es un sistema abierto. Los informes de errores futuros se pueden archivar en: http://bugreport.java.com y alguna versión de ellos podría aparecer para visualizarse en https://bugs.openjdk.java.net – jewelsea

2

diferencia en el columpio donde JFileChooser estaba siendo utilizado para seleccionar las carpetas y archivos individuales, en javafx, no es la clase FileChooser que se utiliza para elegir archivos individuales y de clase DirectoryChooser para seleccionar el directorio

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); 
    } 

es un ejemplo de un selector de Directorio.

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

es un ejemplo de selector de archivos

+0

Algo gracioso aquí: tal vez podrías mejorar tu respuesta (de lo contrario, confundirás a las personas). En su ejemplo supuestamente de un 'DirectoryChooser' no está utilizando un' javafx.stage.DirectoryChooser'. Además, no tiene un método 'showOpenDialog'. –

+1

gracias @mikerodent, he corregido los errores –

+0

En realidad no había visto DirectoryChooser ... ¡así que gracias! –