JavaFX + Scene Builder 如何切换场景

标签 javafx scenebuilder

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

我创建了一个新舞台并使用场景设置它(请参阅 Main.java)。但不确定如何在 中设置新场景旧 阶段(请参阅 Controller.java)。也没有发现是否可以通过 signInButtonClicked()-Methode 通过 Scene Builder 传递“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"));
}

Main.java:
        @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);
    }

最佳答案

您可以引用 SceneWindow从您的按钮引用。从那里开始,由您决定如何显示新 View 。

以下是获取这些引用的方法:

Scene scene = btnSignIn.getScene();
Window window = scene.getWindow();
Stage stage = (Stage) window;

您可以通过更改场景的根来更改 View :
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);

关于JavaFX + Scene Builder 如何切换场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34863425/

相关文章:

java - 如何在Sqlite数据库中存储数据(Android上的JavaFX)

java - 为什么我在 Java 中收到 javafx.fxml.LoadException

java - 将 awt/Cursor 转换为 JavaFX 场景/Cursor?

JavaFX - 更改 TableView 中选定 TableRow 的 TableCell 列

java - JAVAFX 在 12 小时内转换 24 小时制

textarea - JavaFX/ScalaFX - 更改禁用 TextArea 的文本颜色?

java - 切换场景时出现问题(从一个场景转换到另一个场景)

JavaFX 场景生成器崩溃

java - 将连接的链接设置为子圆的中心而不是节点

java - 如何在 JavaFX Scene Builder 中编辑 CubicCurve?