单击按钮时交换JavaFX场景

我正在尝试创建一个程序来教人们有关GNU / Linux和命令行的知识,我有main.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    Stage window;

    public static void main(String[] args) {
        launch(args); 
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        window = primaryStage;
        Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
        primaryStage.setTitle("Learnix");
        primaryStage.setScene(new Scene(root, 800, 500));
        primaryStage.show();
    }
}

和控制器一起去.

package sample;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import java.io.IOException;

public class loginController {
    public Button loginBtn;
    public void loginBtnClick() throws IOException {
        System.out.println("You are logged in");
     }
}

我已经尝试过诸如:

FXMLLoader.load(getClass().getResource("lessons.fxml"));

但是我不知道如何让它交换场景.我在YouTube上看过很多教程,它都有Stack Overflow,但是其中很多教程都将main.java上的所有JavaFX都包含在其中,而不是在单独的文件中,因为我正在使用SceneBuilder.

谢谢.

最佳答案
您可以调用Stage.setScene()更改整个场景,也可以通过Scene.setRoot()将根替换为新的根:

Parent newRoot = FXMLLoader.load(getClass().getResource("lessons.fxml"));
primaryStage.getScene().setRoot(newRoot);

转载注明原文:单击按钮时交换JavaFX场景 - 代码日志