2016-03-22 11 views
0

ステータスが "1"の場合、別のFXMLファイルをロードします。しかし、この次のコードでは、別のFXMLを初期化からロードしません。私はボタンを使用する場合、このコードは動作しますが、私はボタンなしでこれをやりたい誰かが私に助言を与えることで私を助けることができますか?FXMLから別のFXMLをロードする初期化

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    String status = "1"; 
    if(status.equals("1")){ 
     try { 
      Parent root = null; 
      root = FXMLLoader.load(getClass().getResource("/fxml/anotherFXML.fxml")); 
      Scene scene = new Scene(root); 
      MainClass.getStage().setScene(scene); 
      MainClass.getStage().show(); 

      System.err.println("Success"); 

     } catch (IOException ex) { 
      System.err.println("Failed"); 
     } 
    } 
} 

答えて

0

は、実際にはinitializeメソッド内で新しいシーンをロードするための良い方法はありません、それは例外が発生します。あなたは(あなたのApplicationクラスに一回一回、あなたのinitialize方法にして)時間に二回stage.show()を呼び出そうとしているため

ところで、あなたは、いくつかの秒の遅延でそれを行うことができます。

たとえば、PauseTransitionを使用できます。

@Override 
public void initialize(URL location, ResourceBundle resources) { 

    PauseTransition delay = new PauseTransition(Duration.seconds(1)); 
    delay.setOnFinished(event -> { 
     //load your view 
    }); 
    delay.play(); 

}