2012-06-21 227 views
5

Estoy tratando de hacer un juego simple (es un trabajo escolar) en JavaFX y estoy tratando de borrar el panel con el tablero, y luego repintarlo. He intentado muchos métodos, y este es el único que encontré que elimina todas las piezas del tablero (visualmente) sin crear un error visual que muestra una pieza que ya se ha eliminado pero que aún se muestra.Limpiar gridPane en JavaFX y mantener la línea de cuadrícula

Así que declaran la gridPane así:

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 
} 

El problema con este método, es que cuando el "gridPecas.getChildren() borrar();" se llama simplemente pierdo las líneas de cuadrícula del GridPanel.

¿Cómo puedo resolver este problema?

Respuesta

0

Hmm mi sugerencia es no limpiar a todos los niños. Siempre deje las imageViews y simplemente reemplace las imágenes que muestran. Para "borrar" la pizarra, coloque una imagen "vacía".

+0

Gracias por sus respuestas, pero acabo de encontrar la solución perfecta xD En lugar de hacer "gridPecas.getChildren(). Clear();" Solo hago esto en el ciclo for: "gridPecas.getChildren(). RemoveAll (pecasFX [i] [j]);" De modo que cuando lee la pieza la elimina de la cuadrícula y, gracias al código original de "tablero de relleno", tiene una nueva que deja el borde limpio y actualizado. – aliasbody

3

Una manera de despejar la GridPane y mantener las líneas de división es la siguiente:

Node node = grid.getChildren().get(0); 
    grid.getChildren().clear(); 
    grid.getChildren().add(0,node); 

primer nodo * en el GridPane (* si configura el GridLinesVisible antes de agregar elementos en la cuadrícula?) Contiene las líneas de división (y tal vez o otras cosas).

lo que sólo necesita para mantener este nodo antes de las claras & añadirla de nuevo después de

1

un de una sola línea:.. (Grid.getChildren) retainAll (grid.getChildren get() (0));

Cuestiones relacionadas