单击按钮时交换JavaFX场景

时间:2018-01-25 12:25:19

标签: java intellij-idea 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而不是单独的文件,因为我使用的是场景构建器。

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以调用Stage.setScene()来更改整个场景,或者只需将Scene.setRoot()替换为新的场景:

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