2

多くのコントロール (ラベル、テキストフィールド、コンボボックス、チェックボックス) を備えた GUI があります。それらをグリッドペインで整理し、行と列に配置したいと考えています(グリッドペインレイアウトで意図されているように)。

FXML を使用する場合、次のように記述します。

<GridPane>
   <Label GridPane.rowIndex="0" GridPane.columnIndex="0" text="field1"/>
   <TextField GridPane.rowIndex="0" GridPane.columnIndex="1"/>
   <Label GridPane.rowIndex="1" GridPane.columnIndex="0" text="field2"/>
   <TextField GridPane.rowIndex="1" GridPane.columnIndex="1"/>
</GridPane>

問題: 行 0 と 1 の間に行を追加したい場合は、次の行の行インデックスを増やす必要があります。ここで、最初の行の後に行を追加したい 20 行と 5 列を見てみましょう。これにより、最初の行より下のすべての行の行番号を増やす余裕が生まれます。

子コントロールを列番号を増やして同じ行に配置する行要素のようなものはありますか? 私はこのようなことを考えています:

<GridPane>
   <GridPane.Row>
       <Label text="field1"/>
       <TextField/>
   </GridPane.Row>
   <GridPane.Row>
       <Label text="field2"/>
       <TextField/>
   </GridPane.Row>
</GridPane>

私は VBox と HBox を知っていますが、これはほとんど私が欲しいものですが、固定幅の列に要素を入れたいと思っています。

4

1 に答える 1

7

オブジェクトを使用して追跡できますrowIndex

ジャワ:

public class RowCounter {
    private int currentRowIndex = 0;

    /**
     * Return current rowIndex.
     * @return
     */
    public int getCr() {
        return currentRowIndex;
    }

    /**
     * Return current rowIndex and increase it.
     * @return
     */
    public int getNr() {
        return currentRowIndex++;
    }
}

FXML:

<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <RowCounter fx:id="rc" />
    </fx:define>

    <children>
        <Label text="Name:" GridPane.columnIndex="0" GridPane.rowIndex="$rc.cr" />
        <TextField GridPane.columnIndex="1" GridPane.rowIndex="$rc.nr" />

        <Label text="Age:" GridPane.columnIndex="0" GridPane.rowIndex="$rc.cr" />
        <TextField GridPane.columnIndex="1" GridPane.rowIndex="$rc.nr" />

        <Label text="Address:" GridPane.columnIndex="0" GridPane.rowIndex="$rc.cr" />
        <TextField GridPane.columnIndex="1" GridPane.rowIndex="$rc.nr" />
    </children>
</GridPane>
于 2016-10-26T00:40:13.093 に答える