JavaFX中的两个窗格或两个场景?

时间:2017-05-14 12:09:03

标签: java javafx javafx-2 javafx-8

我是JavaFX的新手,我正在尝试了解构建应用程序的最佳方法。我的应用程序开始显示注册表/登录表单,在您执行任一操作后,它会消失并被应用程序的实际UI替换。

这应该是两个场景还是应该是同一个场景中的两个窗格(或类似的东西)?

1 个答案:

答案 0 :(得分:0)

使用单个Stage(窗口)并在2 Scene之间切换或使用2个窗口在它们之间切换完全取决于您。以下是有关如何使用1 Stage并在Scenes之间切换的示例代码。我需要将这个代码归功于@thenewboston,他在 YouTube 上有一个非常好用,有用且易于理解的JavaFX教程:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;

public class Main extends Application {
    Stage window;
    Scene scene1, scene2;

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

    @Override
    public void start(Stage primaryStage) throws Exception {
        window = primartStage;

        Label label1 = new Label("Welcome to the first scene!");
        Button button1 = new Button("Go to scene 2");
        button1.setAction(e -> window.setScene(scene2));

        //  Layout 1 - children are laid out in vertical column
        VBox layout1 = new VBox(20);

        layout1.getChildren().addAll(label1, button1);
        scene1 = new Scene(layout1, 200, 200);

        //  Button 2
        Button button2 = new Button("Go back to scene 1");
        button2.setAction(e -> window.setScene(scene1));

        //  Layout 2
        StackPane layout2 = new StackPane();
        layout2.getChildren().add(button2);

        scene2 = new Scene(layout2, 600, 600);

        window.setScene(scene1);
        window.setTitle("Switching Scenes");
        window.show();
    }
}