2017-02-23 18 views

Antwort

2

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.

1

Bevor die Bühne zeigt, rufen stage.initModality entweder als APPLICATION_MODAL oder WINDOW_MODAL als angemessen. Rufen Sie auch stage.initOwner auf.

Stage stage = new Stage(); 
stage.initModality(Modality.WINDOW_MODAL); 
stage.initOwner(pane.getScene().getWindow()); 
stage.setScene(new Scene(content)); 
stage.show(); 

Hinweis: Sie können die oben genannten Regeln FileChooser keine Anwendung. Sie können jedoch showOpenDialog(Window ownerWindow) dafür verwenden.

fileChooser.showOpenDialog(stage) 

So, wenn Sie öffnen, filechooser.Main Fenster wird blockiert.

Verwandte Themen