De la doc de showOpenDialog
(Souligné par l'auteur):
Affiche un nouveau fichier de dialogue ouvert. La méthode ne retourne pas jusqu'à ce que la boîte de dialogue ouverte affichée soit fermée. La valeur de retour spécifie le fichier choisi par l'utilisateur ou null si aucune sélection n'a été faite. Si la fenêtre de propriétaire est définie pour le dialogue de fichier, la saisie dans toutes les fenêtres de la chaîne de propriétaire du dialogue est bloquée pendant l'affichage de la boîte de dialogue de fichier.
Ainsi, en raison de la chaîne propriétaire, dans ce cas, à la fois la primaryStage
et secondStage
sont obstruées:
primaryStage.setScene(new Scene(new VBox(), 300, 300));
primaryStage.show();
Stage secondStage = new Stage();
secondStage.setScene(new Scene(new VBox(), 50, 50));
secondStage.initOwner(primaryStage);
secondStage.show();
FileChooser fc = new FileChooser();
fc.showOpenDialog(secondStage);
Si vous modifiez la dernière ligne que
fc.showOpenDialog(primaryStage);
le primaryStage
est bloqué, mais le secondStage
est disponible.
Enfin, si vous n'exécutez pas cette ligne:
secondStage.initOwner(primaryStage);
et que vous appelez la dernière ligne comme
fc.showOpenDialog(secondStage);
le primaryStage
n'est pas bloqué, mais le secondStage
est bloqué.