I'm trying to make a simple game (it is a school work) in JavaFX and I am trying to clear the panel with the board, and then just repaint it. I have tried a lot of methods, and this one is the only one I found that removes all the pieces of the board (visually) without creating a visual bug that shows a piece that has already been deleted but is still shown.
So I declare the gridPane
like this:
private GridPane gridPecas;
@Override
public void start(Stage primaryStage)
{
gridPecas = new GridPane();
gridPecas.setGridLinesVisible(true);
paintBoard();
// rest of the code to create and paint the Stage
}
private void paintBoard()
{
gridPecas.getChildren().clear();
// Code to fill the board with ImageView and Images of the pieces
}
The problem with this method, is that when the "gridPecas.getChildren().clear();" is called I just loose the grid lines from the GridPanel
.
How can I solve this problem?
A way to clear the GridPane and maintain the Gridlines is as follow : Node node = grid. getChildren(). get(0); grid.
GridPane lays out its children within a flexible grid of rows and columns. If a border and/or padding is set, then its content will be layed out within those insets. A child may be placed anywhere within the grid and may span multiple rows/columns.
To remove nodes, just use gridpane. getChildren(). remove(...); or gridpane. getChildren().
setGridLinesVisible(boolean)
is for debug only:
http://docs.oracle.com/javafx/2/api/javafx/scene/layout/GridPane.html#setGridLinesVisible(boolean)
You can't even change the gridLines color for exemple.
So you should find another way to make your gridlines, and then call
yourPane.getChildren().clear();
because it's better than gridPecas.getChildren().removeAll(pecasFX[i][j]);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With