Как динамически удалять узлы в JavaFx
@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 ответ
Камни хранятся в ObservableList
в пределах gamePane
контейнер, к которому вы получаете доступ с помощью getChildren()
метод. Этот список очень полезен clear()
метод, который удаляет все элементы в списке.
Так что если вы просто хотите удалить все камни из gamePane
просто вызовите этот метод:
gamePane.getChildren().clear();