JavaFX+;场景生成器如何切换场景

JavaFX+;场景生成器如何切换场景,javafx,scenebuilder,Javafx,Scenebuilder,我正在使用JavaFx和Scenebuilder,希望在eclipse中为自己创建一个名为“Taskplanner”的本地应用程序 我创建了一个新的舞台,并设置了一个场景(参见Main.java)。但不确定如何在旧的阶段设置新场景(参见Controller.java)。也没有发现是否可以将signInButtonClicked()方法传递给场景生成器上的“Stage primaryStage” 有人能帮忙吗 Controller.java: @FXML Button btnSignIn; @F

我正在使用JavaFx和Scenebuilder,希望在eclipse中为自己创建一个名为“Taskplanner”的本地应用程序

我创建了一个新的舞台,并设置了一个场景(参见Main.java)。但不确定如何在旧的阶段设置新场景(参见Controller.java)。也没有发现是否可以将signInButtonClicked()方法传递给场景生成器上的“Stage primaryStage”

有人能帮忙吗

Controller.java:

@FXML
Button btnSignIn;

@FXML
public void signInButtonClicked() throws Exception
{
//Here I want call the new Scene(SignInGUI.fxml) in my old Stage
   FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/SignInGUI.fxml"));
}
        @Override
        public void start(Stage primaryStage) throws Exception 
      {
            Parent root = FXMLLoader.load(getClass().getResource("../view/LoginGUI.fxml"));

            primaryStage.setTitle("Taskplanner");
            primaryStage.setScene(new Scene(root,500,500));
            primaryStage.show();
        }


        public static void main(String[] args) {

            launch(args);
    }
Main.java:

@FXML
Button btnSignIn;

@FXML
public void signInButtonClicked() throws Exception
{
//Here I want call the new Scene(SignInGUI.fxml) in my old Stage
   FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("../view/SignInGUI.fxml"));
}
        @Override
        public void start(Stage primaryStage) throws Exception 
      {
            Parent root = FXMLLoader.load(getClass().getResource("../view/LoginGUI.fxml"));

            primaryStage.setTitle("Taskplanner");
            primaryStage.setScene(new Scene(root,500,500));
            primaryStage.show();
        }


        public static void main(String[] args) {

            launch(args);
    }

您可以从按钮引用中获取对
场景
窗口
的引用。从这里开始,由您决定如何显示新视图

以下是您获取这些参考资料的方式:

Scene scene = btnSignIn.getScene();
Window window = scene.getWindow();
Stage stage = (Stage) window;
可以通过更改场景的根来更改视图:

FXMLLoader loader = ... // create and load() view
btnSignIn.getScene().setRoot(loader.getRoot());
或者可以更改整个场景:

FXMLLoader loader = ... // create and load() view
Stage stage = (Stage) btnSignIn.getScene().getWindow();
Scene scene = new Scene(loader.getRoot());
stage.setScene(scene);