Events JavaFX-为什么我的FileChooser允许我访问origin阶段?

Events JavaFX-为什么我的FileChooser允许我访问origin阶段?,events,button,javafx,javafx-8,filechooser,Events,Button,Javafx,Javafx 8,Filechooser,单击该按钮时,会打开一个文件选择器。但是,例如,我可以在文件选择器仍然打开时关闭原始阶段,或者我仍然可以单击并切换实际窗口。检查下面的代码 我的问题是:1-当我关闭主窗口时,如何使文件选择器关闭2-打开文件选择器时,如何使主窗口不可单击? 包应用; 导入javafx.application.application; 导入javafx.event.ActionEvent; 导入javafx.event.EventHandler; 导入javafx.scene.scene; 导入javafx.sce

单击该按钮时,会打开一个文件选择器。但是,例如,我可以在文件选择器仍然打开时关闭原始阶段,或者我仍然可以单击并切换实际窗口。检查下面的代码

我的问题是:
1-当我关闭主窗口时,如何使文件选择器关闭
2-打开文件选择器时,如何使主窗口不可单击?

包应用;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.layout.ancorpane;
导入javafx.stage.FileChooser;
导入javafx.stage.model;
导入javafx.stage.stage;
导入javafx.stage.Window;
公共类主扩展应用程序{
@覆盖公共无效开始(阶段){
舞台。片名(“主舞台”);
舞台设置宽度(500);
舞台设置高度(500);
stage.show();
按钮按钮=新按钮();
AnchorPane ap=新的AnchorPane();
场景=新场景(ap);
ap.getChildren().addAll(按钮);
舞台场景;
setOnAction(新的EventHandler(){
@重写公共无效句柄(ActionEvent e){
FileChooser FileChooser=newfilechooser();
阶段2=新阶段();
阶段2.初始所有者(阶段);
阶段2.初始模态(模态.窗口模态);
fileChooser.showOpenDialog(stage2);
}
});  
}
公共静态void main(字符串[]args){
发射(args);
}
}
根据

如果设置了文件对话框的所有者窗口,则输入到所有窗口 对话框中的所有者链在文件对话框运行时被阻止 显示

但是,您将所有者窗口设置为不在屏幕上的窗口,因此我认为在这种情况下没有“所有者链”,并且文件选择器实际上不是模态的

为什么不直接做呢

    button.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
            FileChooser fileChooser = new FileChooser();
            fileChooser.showOpenDialog(stage); 
       }
   });
button.setOnAction(新的EventHandler(){
@重写公共无效句柄(ActionEvent e){
FileChooser FileChooser=newfilechooser();
fileChooser.showOpenDialog(阶段);
}
});
使文件选择器的所有者窗口成为实际窗口

    button.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
            FileChooser fileChooser = new FileChooser();
            fileChooser.showOpenDialog(stage); 
       }
   });