gpt4 book ai didi

JavaFx setOnCloseRequest & 文件检查等待

转载 作者:行者123 更新时间:2023-12-02 13:39:00 27 4
gpt4 key购买 nike

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

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。我“认为”问题可能是当用户按下按钮时,它“立即”检查文件,但尚未创建... .

感谢您的回答!

最佳答案

如果您不想关闭窗口,则应该使用关闭请求事件:

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

关于JavaFx setOnCloseRequest & 文件检查等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42844608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com