2012-02-21 15 views
44

Ora ho riscontrato un piccolo problema con JavaFX. Ho provato a fare un filechoosing nel mio codice in cui posso puntare su una cartella anziché su un file. Attualmente non ho una soluzione per questo. Conosci una soluzione alternativa (eccetto l'utilizzo di JFileChooser dallo swing)?JavaFX FileChooser

Molte grazie per le risposte in anticipo

edit: ho già preso ora una risposta, cercando di provarlo, ma ho dimenticato di menzionare la versione di JavaFX. È l'ultima versione 2.0.3 stabile, rilasciata pochi giorni fa (ma l'iniziale non beta 2.0 e 2.0.1 aveva anche questo problema)

risposta

86

Un DirectoryChooser è stato aggiunto a JavaFX come parte di the 2.1 release. L'uso è:

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

Il issue tracker menziona un work-around per il rilascio 2.0GA: "l'accesso alla privata metodo di Oracle API vetro CommonDialogs.showFolderChooser".

+2

"Non è possibile visualizzare questo URL come ospite. È necessario il login o registrarsi per un account." – XXL

+2

Fare clic sul collegamento di registrazione nel [Jogger tracker JavaFX] (http://javafx-jira.kenai.com/) per registrarsi per un account: è un sistema aperto, chiunque può registrarsi per un account. – jewelsea

+1

La politica è cambiata un paio di mesi fa e il tracker JavaFX Jira non è più un sistema aperto. Eventuali segnalazioni di bug futuri possono essere archiviate su: http://bugreport.java.com e alcune versioni potrebbero essere visualizzate per la visualizzazione in https://bugs.openjdk.java.net – jewelsea

2

differenza in altalena dove JFileChooser veniva utilizzato per selezionare le cartelle ei singoli file, in JavaFX, non c'è classe FileChooser che viene utilizzato per la scelta di singoli file e classe DirectoryChooser per la selezione di directory

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

è un esempio di un selettore di directory.

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

è un esempio di selezione dei file

+0

Qualcosa di divertente qui: forse potresti migliorare il tuo risposta (altrimenti si confondono le persone). Nel tuo esempio apparentemente di 'DirectoryChooser' non stai usando un' javafx.stage.DirectoryChooser'. Inoltre non ha un metodo 'showOpenDialog'. –

+1

grazie a @mikerodent, ho corretto gli errori –

+0

In realtà non avevo individuato DirectoryChooser ... quindi grazie! –