Clean gridPane in JavaFX and maintain the Grid line

aliasbody picture aliasbody · Jun 22, 2012 · Viewed 30.5k times · Source

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?

Answer

Flo C picture Flo C · Aug 20, 2013

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]);