Как динамически удалять узлы в JavaFx - PullRequest
0 голосов
/ 25 июня 2018
@FXML AnchorPane gamePane;

public void gameStart() {
    if(!Started) {
        board = new Board();
        stones = new Circle[8][8];
        newTurn();
        applyBoard();
        Started = true;
    }
    else {
        DestroyBoard(); // <--- Erase all the stones 
        board = new Board();
        stones = new Circle[8][8];
        newTurn();
        applyBoard();
    }
}

public void applyBoard() { 
    for(int i = 0; i < board.boardsize; i++) {
        for(int j = 0; j < board.boardsize; j++) {
            if(board.board[i][j] != board.EMPTY) {
                if(board.board[i][j] == board.BLACK) {
                    stones[i][j] = new Circle(155 + 90 * j, 85 + 90 * i, 40);
                    stones[i][j].setFill(Color.BLACK);
                    gamePane.getChildren().add(stones[i][j]);
                }
                else if(board.board[i][j] == board.WHITE) {
                    stones[i][j] = new Circle(155 + 90 * j, 85 + 90 * i, 40);
                    stones[i][j].setFill(Color.WHITE);
                    gamePane.getChildren().add(stones[i][j]);
                }
            }
        }
    }
}
public void DestroyBoard() { // <---Test Function and not worked!!
    gamePane.getChildren().remove(stones[3][3]);
}

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

1 Ответ

0 голосов
/ 25 июня 2018

Камни хранятся в ObservableList в контейнере gamePane, доступ к которому осуществляется с помощью метода getChildren().В списке есть очень полезный метод clear(), который удаляет все элементы в списке.

Так что, если вы просто хотите удалить все камни из gamePane, просто вызовите этот метод:

gamePane.getChildren().clear();
...