我在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();
}
}