Как изменить и перерисовать GridPane в JavaFX - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать стандартный решатель лабиринта мыши для класса, и у меня возникают проблемы с графической частью. Решить лабиринт легко, но графически обновлять мышь, когда он движется, сложно. Ниже приведена урезанная версия того, что у меня есть.

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

    Maze maze = new Maze();
    maze.loadMazeFromFile("maze_input.txt");
    GridPane mazeGrid = maze.drawGrid();
    mazeGrid.setAlignment(Pos.CENTER);

    StackPane root = new StackPane();
    root.getChildren().add(mazeGrid);

    Scene scene = new Scene(root, (maze.rows()*10)+40, (maze.columns()*10)+130);

    primaryStage.setTitle("Mad Mouse Maze");
    primaryStage.setScene(scene);
    primaryStage.show();

    maze.solveMaze();
}

Открывается простое окно с моим лабиринтом, отображаемым в нем, и мышь может решить лабиринт, как видно на выходе консоли, и все это прекрасно работает. Что мне нужно сделать, и я не могу понять, как это сделать, это повторять mazeGrid = maze.drawGrid(); каждый раз, когда мышь перемещается в пределах maze.solveMaze();, и перерисовывать GridPane, представляющий лабиринт. Как мне получить доступ к mazeGrid из лабиринта? Создаю ли я какое-то событие для сетки, чтобы отслеживать и запускать его, если да, то как? Получить доступ к элементам в окне чрезвычайно сложно в JavaFX, который говорит мне, что я делаю что-то не так. пожалуйста, помогите.

...