2012-06-21 22 views
5

Ich versuche, ein einfaches Spiel (es ist eine Schule Arbeit) in JavaFX und ich versuche, das Panel mit der Platine zu löschen, und dann nur neu streichen. Ich habe viele Methoden ausprobiert, und dieses ist das einzige, das ich gefunden habe, das alle Teile des Brettes (visuell) entfernt, ohne einen Sichtfehler zu verursachen, der ein Stück zeigt, das bereits gelöscht worden ist, aber noch gezeigt wird.Reinigen Sie GridPane in JavaFX und pflegen Sie die Gitterlinie

So erkläre ich die gridPane wie folgt aus:

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 
} 

Das Problem bei diesem Verfahren ist, dass, wenn die "gridPecas.getChildren() klar();" heißt ich verliere gerade die Gitterlinien von der GridPanel.

Wie kann ich dieses Problem lösen?

Antwort

0

Hmm mein Vorschlag ist nicht alle Kinder zu löschen. Lassen Sie die imageViews immer und ersetzen Sie nur die Bilder, die sie zeigen. Um die Tafel zu "leeren", legen Sie ein "leeres" Bild an. nur

+0

Vielen Dank für Ihre Antworten, aber ich habe gerade die perfekte Lösung gefunden xD Statt "gridPecas.getChildren(). Clear();" Ich mache das einfach im for cycle: "gridPecas.getChildren(). RemoveAll (pecasFX [i] [j]);" So dass er beim Lesen des Stückes es aus dem Raster löscht, und dank des ursprünglichen "Füllbrett" -Codes hatte er einen neuen, der die Grenze sauber und aktualisiert ließ. – aliasbody

3

Ein Weg, um die GridPane zu löschen und halten die Gitternetzlinien ist wie folgt:

der erste Knoten * im GridPane (* wenn Sie GridLinesVisible vor dem Hinzufügen von Elementen im Grid setzen?) Enthält die Gridlines (und möglicherweise o andere Dinge).

So müssen Sie gerade diesen Knoten zu halten, bevor die klaren & erneut hinzuzufügen, nachdem

1

ein Einzeiler:.. Grid.getChildren() retainAll (grid.getChildren() erhalten (0));