2012-06-21 20 views
5

私はJavaFXで単純なゲーム(それは学校の仕事です)を作ろうとしていて、ボードでパネルをクリアしてから再ペイントしようとしています。私はたくさんの方法を試しましたが、すでに削除されているがまだ表示されているビジュアルバグを作成せずに、ボードのすべての部分を(視覚的に)取り除く唯一のものです。JavaFXのグリッドパネルをきれいにしてグリッド線を維持

だから私はこのようなgridPane宣言:、

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 
} 

この方法に問題があることをしているとき ")(クリアgridPecas.getChildren();"私はちょうどGridPanelからのグリッド線を緩めると呼ばれています。

どうすればこの問題を解決できますか?

答えて

0

私の提案は、すべての子供をまったく解消するものではありません。常にimageViewsを離れ、表示される画像を置き換えてください。ボードを「クリア」するには、「空の」イメージを入れます。

+0

回答ありがとうございます。しかし、私は "gridPecas.getChildren()。clear();"の代わりに完全なソリューションxDを見つけました。私はちょうどforサイクルでこれを行います: "gridPecas.getChildren()。removeAll(pecasFX [i] [j]);"そこで、それをグリッドから削除し、オリジナルの "塗りつぶし"コードのおかげで、彼は国境を清潔にして更新した新しいものを持っていました。 – aliasbody

3

setGridLinesVisible(boolean)は、デバッグのためにある:

http://docs.oracle.com/javafx/2/api/javafx/scene/layout/GridPane.html#setGridLinesVisible(boolean)

あなたもexempleのためのグリッド線の色を変更することはできません。

ですから、あなたのグリッド線を作るための別の方法を見つけて、それがGridPaneをクリアして、グリッド線を維持する方法は以下の通りであるgridPecas.getChildren().removeAll(pecasFX[i][j]);

3

よりはましだから

yourPane.getChildren().clear(); 

を呼び出す必要があります。

GridPaneの最初のノード*(グリッド内に要素を追加する前にGridLinesVisibleを設定した場合*)には、グリッド線あなたの事)。

だから、あなただけの明確な&が

1

た後、それを再度追加ワンライナー前にこのノードを維持する必要があります。。grid.getChildren()のretainAll(grid.getChildren()(0)を取得);

関連する問題