2015-10-04 2 views
0

Je suis en mesure d'ouvrir le fichier chooser avec le code suivantOuverture d'un sélecteur de fichier dans la fenêtre principale - JavaFX

@FXML 
    private TextField myText; 

    @FXML 
    private Button browse; 
    private Window primaryStage; 


    @FXML 
    private void initialize(){ 

     browse.setOnAction((event) -> { 
      FileChooser fileChooser = new FileChooser(); 
      File file = fileChooser.showOpenDialog(primaryStage); 
      String fileName = String.valueOf(file); 
      myText.setText(fileName); 
     }); 

    } 

Mais je suis en train d'ouvrir le fichier chooser quelque chose comme ça (capture d'écran de Microsoft updater) Est-ce que quelqu'un peut me dire comment dois-je ouvrir le sélecteur de fichier comme indiqué dans la capture d'écran (comme un calque supérieur)?

Merci.

+0

Qu'est-ce que vous obtenez lorsque vous ouvrez le sélecteur de fichiers? –

+0

Un explorateur de fichiers pour choisir un fichier – Akshay

+0

Vous voulez quelque chose comme ça? http://i.imgur.com/nPSBdHk.png Remarquez comment le sélecteur de fichier est "attaché" à ma fenêtre "Test". – JVon

Répondre

2

La raison pour laquelle votre sélecteur de fichier n'est pas attaché à votre primaryStage est que primaryStage est null. Vous n'avez jamais défini sa valeur. Lorsque ce paramètre est null, le sélecteur de fichiers flotte autour sans un parent. Donc, votre solution serait de définir primaryStage. Mais si vous voulez une solution rapide, remplacez File file = fileChooser.showOpenDialog(primaryStage); par ceci:

File file = fileChooser.showOpenDialog(((Node) event.getTarget()).getScene().getWindow()); 
+0

seriez-vous en mesure de répondre http://stackoverflow.com/questions/32940507/opening-a-new-fxml-attached-to-the-current-stage-javafx – Akshay

+0

@akshay ouais, j'ai posté une réponse là-bas . – JVon