12

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()。clear();」の場合です。と呼ばれます。からグリッド線を緩めるだけGridPanelです。

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

4

5 に答える 5

7

setGridLinesVisible(boolean)デバッグ専用です:

http://docs.oracle.com/javafx/2/api/javafx/scene/layout/GridPane.html#setGridLinesVisible(ブール値)

たとえば、 gridLines の色を変更することさえできません。

したがって、グリッド線を作成する別の方法を見つけてから呼び出す必要があります

yourPane.getChildren().clear();

よりも優れているからです。gridPecas.getChildren().removeAll(pecasFX[i][j]);

于 2013-08-20T10:13:35.517 に答える
4

GridPane をクリアして Gridlines を維持する方法は次のとおりです。

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

GridPane の最初の Node* (*グリッドに要素を追加する前に GridLinesVisible を設定した場合) には、Gridlines (およびその他のもの) が含まれます。

したがって、クリアする前にこのノードを保持し、後で再追加する必要があります

于 2015-04-09T10:25:20.533 に答える
1

ワンライナー: grid.getChildren ().retainAll(grid.getChildren().get(0));

于 2016-06-12T04:31:15.520 に答える
1

有効なクリア GridPane と復元 mainrtain グリッド ライン:

gridPane.setGridLinesVisible(false);
gridPane.getColumnConstraints().clear();
gridPane.getRowConstraints().clear();
gridPane.getChildren().clear();
gridPane.setGridLinesVisible(true);
于 2020-02-19T10:01:29.283 に答える
0

うーん、私の提案は、すべての子供をまったくクリアしないことです。常に imageViews を残し、表示される画像を置き換えるだけです。ボードを「クリア」するには、「空の」画像を置きます。

于 2012-06-22T07:54:22.863 に答える