2017-02-23 119 views

回答

2

showOpenDialog(重點煤礦)的文檔:

顯示了一個新的文件打開對話框。該方法不會返回,直到 顯示打開的對話框被解除。返回值指定用戶選擇的 文件,如果沒有選擇,則返回null。 如果設置了文件對話框的所有者窗口 ,則會在文件對話框顯示時阻止對話框所有者鏈中所有窗口的輸入。

所以因爲業主鏈的,在這種情況下,無論是primaryStagesecondStage被封鎖:

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

如果修改了最後一行的

fc.showOpenDialog(primaryStage); 

primaryStage被阻止,但secondStage可用。


最後,如果你不執行這行:

secondStage.initOwner(primaryStage); 

,你叫最後一行是

fc.showOpenDialog(secondStage); 

primaryStage不堵塞,但secondStage被阻止。

1

之前示出了階段,調用stage.initModality如任一APPLICATION_MODALWINDOW_MODAL適當。同時調用stage.initOwner

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

注意不能適用上述規則FileChooser。但是,您可以使用showOpenDialog(Window ownerWindow)

fileChooser.showOpenDialog(stage) 

所以當你打開filechooser.Main窗口將被阻止。

相關問題