我有一個簡單的JavaFX應用程序,並且我打開FileChooser
只需撥打showOpenDialog()
即可。當FileChooser處於活動狀態時防止窗口聚焦
我想在文件選擇器打開時禁止選擇主窗口,並儘可能將其保留在主窗口的頂部。
感謝您給予的任何幫助。
我有一個簡單的JavaFX應用程序,並且我打開FileChooser
只需撥打showOpenDialog()
即可。當FileChooser處於活動狀態時防止窗口聚焦
我想在文件選擇器打開時禁止選擇主窗口,並儘可能將其保留在主窗口的頂部。
感謝您給予的任何幫助。
從showOpenDialog
(重點煤礦)的文檔:
顯示了一個新的文件打開對話框。該方法不會返回,直到 顯示打開的對話框被解除。返回值指定用戶選擇的 文件,如果沒有選擇,則返回null。 如果設置了文件對話框的所有者窗口 ,則會在文件對話框顯示時阻止對話框所有者鏈中所有窗口的輸入。
所以因爲業主鏈的,在這種情況下,無論是primaryStage
和secondStage
被封鎖:
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
被阻止。
之前示出了階段,調用stage.initModality
如任一APPLICATION_MODAL
或WINDOW_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窗口將被阻止。