Java FX,切换场景会弄乱第二个场景的节点对齐?

时间:2017-11-17 05:46:28

标签: java javafx scene

我在java FX应用程序上工作,我在启动场景startScreen()和我的游戏场景create()之间切换。我已经看了很多关于如何切换场景的教程,以确保我有正确的想法,而且看起来很简单。

但是,如果我使用create()场景启动应用程序,那么所有节点的格式和对齐都可以。如果我尝试从startScreen()场景开始然后使用动作事件切换到create(),则游戏场景中节点的对齐会变得混乱(棋盘移位并放置标签)在董事会之上)。就我在教程中看到的而言,切换场景不应该影响场景节点的对齐,假设场景通常是单独工作的。   Original (just calling create())Second Version calling both startScreen() and create()

public Parent create() {
    BorderPane root = new BorderPane();
    root.setPrefSize(800, 800);
    setButtons(root);
    enemy = new Board(event -> {...}, true);
    player = new Board(event -> {...}, false);
    VBox vbox = new VBox(50, enemyLabel, enemy, playerLabel, player);
    vbox.setAlignment(Pos.CENTER);
    root.setCenter(vbox);
    return root;
}

public Parent startScreen(Stage primaryStage) {
    BorderPane pane = new BorderPane();
    pane.setPrefSize(800, 800);
    pane.setId("pane");
    Button button = new Button("START");
    button.setOnAction(e-> primaryStage.setScene(new Scene(create())));
    pane.setCenter(button);
    return pane;
}

@Override
public void start(Stage primaryStage) {
    try {
        primaryStage.setTitle("Boat Wars");
        primaryStage.setResizable(false);
        //Scene scene = new Scene(startScreen(primaryStage));
        //scene.getStylesheets().addAll(this.getClass().getResource("application.css").toExternalForm());
        Scene scene = new Scene(create());
        primaryStage.setScene(scene);
        primaryStage.show();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

0 个答案:

没有答案