Невозможно переключить сцены, потому что сцена пуста

Я пытаюсь переключать сцены, не создавая новое окно. Однако этап, который я инициализирую и устанавливаю равным primaryStage по умолчанию, который обеспечивает JavaFX, кажется равным нулю вне метода start.

Вот код:

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


@Override
public void start(Stage primaryStage) throws Exception{

    window = primaryStage;
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    window.setTitle("Hello World");
    window.setScene(new Scene(root, 1000, 1000));
    window.show();
    System.out.println(window + "start");
}





public void regEvent()
{
    System.out.println(window);
   startGame(4,4);

}
private void startGame(int width, int height)
{
    System.out.println(window);
    board = new Tile[width][height];

    grid = new GridPane();
    grid.setPadding(new Insets(10,10,10,10));
    //individual cell spacing
    grid.setVgap(10);
    grid.setHgap(10);

    for(int x = 0; x< width; x++)
    {
        for(int y = 0; y< height; y++)
        {
            board[x][y] = new Tile(x,y);
            board[x][y].setText(x + " , " + y);
            GridPane.setConstraints(board[x][y], x, y);
            grid.getChildren().add(board[x][y]);
        }
    }
    Scene scene = new Scene(grid,1000,1000);
    window.setScene(scene);
    window.show();
}

Когда я говорю "window.setScene(scene)" в методе startGame, генерируется исключение nullpointer. Я знаю, что окно Stage - это то, что вызывает его, потому что окно печати в начале startGame возвращает ноль.

Это не имеет смысла для меня, потому что я инициализировал окно в начале этого класса и дал ему значение до того, как startGame был вызван через метод start.

Может кто-нибудь сказать мне, как переключить сцену, сохраняя ту же сцену? Это все, что я хочу сделать.

Спасибо, парни!

1 ответ

Я только что ответил на тот же вопрос, что у вас здесь:

JavaFX Window Changer с использованием FXML

Другие вопросы по тегам