当FileChooser处于活动状态时,防止窗口被聚焦

时间:2017-02-23 13:28:17

标签: java javafx java-8 javafx-8 filechooser

我有一个简单的JavaFX应用程序,我只是通过调用FileChooser打开showOpenDialog()

我希望在文件选择器打开时禁用我的主窗口,并在可能的情况下将其保留在主窗口的顶部。

感谢您给予的任何帮助。

1 个答案:

答案 0 :(得分: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被屏蔽。