我有两个窗户。如果属性文件不存在,则会启动第一个。如果文件已经存在,或者当用户单击创建文件的按钮时,第二个是(我希望它)打开。这是代码....
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();
}
});
之前,我只使用了“primaryStage.show();”而不是setOnCloseRequest。但在关闭第一个窗口之后,这将打开第二个窗口,无论如何。因此,如果我按下按钮,它会打开,但如果我点击顶角的X.我不希望它。我尝试了setOnCloseRequest来检查用户是否在退出之前设置了他的名字(基本上如果他按下按钮保存)这样,当我用X关闭时它没有显示,但是如果按下按钮也不会打开。我希望它在按下按钮时打开而不是X.我认为问题可能是当用户按下按钮时,它“立即”检查文件但是它还没有创建...... 。
感谢您的回答!
答案 0 :(得分:1)
如果您不想关闭窗口,则应使用关闭请求事件:
if(prop.getProperty("name") != null || f.exists()) {
primaryStage.show();
} else {
e.consume();
}