2017-03-16 9 views
0

私は2つのウィンドウを持っています。プロパティファイルが存在しない場合、最初のファイルが起動されます。 2番目のファイルは、ファイルがすでに存在する場合、またはユーザーがファイルを作成するボタンをクリックした場合に開かれます。 "primaryStage.showを();" の代わりにsetOnCloseRequestの、私はちょうど持っていた、前にここでコードが....JavaFx setOnCloseRequest&File check wait

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(); 
        } 
       }); 

ですしかし、これは、最初のウィンドウを閉じた後に、何があっても2番目のウィンドウを開きます。したがって、ボタンを押すだけでなく、上の角にあるXをクリックした場合にも開きます。私はそれが欲しくない。私はsetOnCloseRequestを試して、ユーザが終了する前に彼の名前を設定したかどうかをチェックしました(基本的に彼はこのボタンを押して保存します)。これはXで閉じると表示されませんが、 。ボタンが押されてもXではないときに開きたいと思う。ユーザーがボタンを押したときに「即座に」ファイルをチェックするが、まだ作成されていないことが問題だと思う。 。

ありがとうございました!

答えて

1

ウィンドウを閉じるにしたくない場合は、クローズ要求イベントを消費する必要があります。

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

ありがとう!出来た。 – RekTek249