0

次のように、Java fxml ファイルでグリッド ペインを定義しました。

<GridPane fx:id="grid" gridLinesVisible="true" prefHeight="256" prefWidth="256">

  ...

  <children>
    <Label maxHeight="1.8" maxWidth="1.8" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.columnIndex="1" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.columnIndex="2" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.rowIndex="1" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.columnIndex="1" GridPane.rowIndex="1" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.columnIndex="2" GridPane.rowIndex="1" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.rowIndex="2" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.columnIndex="1" GridPane.rowIndex="2" />
    <Label maxHeight="1.8" maxWidth="1.8" GridPane.columnIndex="2" GridPane.rowIndex="2" />
  </children>

  ...

</GridPane>

グリッドは 3 x 3 で、各セルにラベルがあります。以下の擬似コードに示すように、グリッドをループして各ラベルのテキストを変更することは可能ですか?

for (cell : grid)
{
  cell.label.setText("x");
}
4

1 に答える 1

2

することができます

for ( Node node : gridPane.getChildren() )
{
    (( Label ) node).setText( "x" );
}

と仮定するgridPane.setGridLinesVisible( false );

ただし、 の場合gridPane.setGridLinesVisible( true )、追加gridLinesの ( のタイプGroup) が gridPane の子リストに追加されます。この場合、クラス タイプを確認する必要があります。

for ( Node node : gridPane.getChildren() )
{
    if(node instanceof Label)
        (( Label ) node).setText( "x" );
}

gridLinesVisibleこのプロパティはデバッグ専用であることに注意してください。GridPane をスタイルする他のオプションがあります。

于 2015-06-10T14:57:33.147 に答える