繁体   English   中英

从FXML初始化加载另一个FXML

[英]Load Another FXML from a FXML initialize

如果状态为“ 1”,我想加载另一个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");
        }
    }
}

实际上,这不是在initialize方法中加载新场景的好方法,并且会导致异常。

顺便说一下,您可以延迟几秒钟来完成此操作,因为您尝试一次调用stage.show()两次(一次在initialize方法中,一次在Application类中)。

例如,您可以使用PauseTransition

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

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM