Vom doc von showOpenDialog
(Hervorhebung von mir):
Zeigt eine neue offene Dialog-Datei. Die Methode wird erst zurückgegeben, wenn der geöffnete Dialog beendet wird. Der Rückgabewert gibt die Datei an, die vom Benutzer ausgewählt wurde, oder null, wenn keine Auswahl getroffen wurde. Wenn das Besitzerfenster für das Dateidialogfeld festgelegt ist, wird die Eingabe für alle Fenster in der Eignerkette des Dialogfelds blockiert, während der Dateidialog angezeigt wird.
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);
Wenn Sie die letzte Zeile als
fc.showOpenDialog(primaryStage);
ändern:
Also wegen der Besitzer Kette, in diesem Fall sowohl die primaryStage
und die secondStage
blockiert Die primaryStage
ist blockiert, aber die secondStage
ist verfügbar.
Schließlich, wenn Sie nicht ausführen diese Zeile:
secondStage.initOwner(primaryStage);
und rufen Sie die letzte Zeile als
fc.showOpenDialog(secondStage);
die primaryStage
nicht blockiert wird, aber die secondStage
blockiert.