Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFx setOnCloseRequest&;文件检查等待_Java_Javafx - Fatal编程技术网

JavaFx setOnCloseRequest&;文件检查等待

JavaFx setOnCloseRequest&;文件检查等待,java,javafx,Java,Javafx,我有两扇窗户。如果属性文件不存在,则启动第一个属性文件。第二个是(我希望它)打开,如果文件已经存在,或者当用户单击创建文件的按钮时。这是代码 try { if(f.exists()) { input = new FileInputStream("config.properties"); prop.load(input); } if(f.exists() && prop.getProp

我有两扇窗户。如果属性文件不存在,则启动第一个属性文件。第二个是(我希望它)打开,如果文件已经存在,或者当用户单击创建文件的按钮时。这是代码

try {
        if(f.exists()) {
            input = new FileInputStream("config.properties");
            prop.load(input);
        }

        if(f.exists() && prop.getProperty("name") != null){
            primaryStage.show();
        }else if(prop.getProperty("name") == null || !f.exists()){

            try {
                Stage stage = new Stage();

                FXMLLoader loader = new FXMLLoader(getClass().getResource("summ.fxml"));
                Parent root1 = loader.load();

                stage.setTitle("temp");
                stage.setResizable(false);
                stage.setScene(new Scene(root1));

                stage.showAndWait();

                summController summController = loader.getController();
                String name = summController.getName();
                stage.setOnCloseRequest(e->{

                    if(prop.getProperty("name") != null || f.exists()) {
                        primaryStage.show();
                    }
                });
在此之前,我没有使用setOnCloseRequest,而是使用了“primaryStage.show();”,但无论怎样,在关闭第一个窗口之后,这都会打开第二个窗口。所以,如果我按下按钮,它会打开,但是如果我点击了上角的X,它也会打开。我不想这样。我尝试了setOnCloseRequest来检查用户在退出之前是否设置了自己的名字(基本上,如果他按下按钮保存),这样,当我用X关闭时它不会显示,但如果按下按钮,它也不会打开。我希望它在按下按钮时打开,而不是X。我“认为”问题可能是,当用户按下按钮时,它“立即”检查文件,但它尚未创建


谢谢你的回答

如果不想关闭窗口,应使用close request事件:

if(prop.getProperty("name") != null || f.exists()) {
    primaryStage.show();
} else {
    e.consume();
}