9

我通过 SceneBuilder 初始化了一个 GridPane,在控制器内部我想有条件地向 GridPane 添加一行。我不想为我初始化的行数存储一个 int,我希望能够从 GridPane 对象中获取行数。那可能吗?

4

4 回答 4

11

Hej j 会,试试这个方法:

private int getRowCount(GridPane pane) {
        int numRows = pane.getRowConstraints().size();
        for (int i = 0; i < pane.getChildren().size(); i++) {
            Node child = pane.getChildren().get(i);
            if (child.isManaged()) {
                Integer rowIndex = GridPane.getRowIndex(child);
                if(rowIndex != null){
                    numRows = Math.max(numRows,rowIndex+1);
                }
            }
        }
        return numRows;
    }

这对我有用。

帕特里克

于 2013-12-24T21:06:16.637 回答
7

在我的例子中,我使用了 Java 反射( GridPane.java 有私有方法getNumberOfRows()):

Method method = gridPane.getClass().getDeclaredMethod("getNumberOfRows");
method.setAccessible(true);
Integer rows = (Integer) method.invoke(gridPane);
于 2016-10-01T13:30:23.117 回答
3

使用 java 9,您可以这样做:

myGridPane.getRowCount();
于 2017-12-10T10:51:48.230 回答
0

这对我有用

GridPane.getRowConstraints().size()
于 2020-02-20T20:25:03.710 回答