获取JavaFX GridPane中的行数?

j w*_*ill 9 java layout javafx pane javafx-2

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

Pat*_*ick 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;
    }
Run Code Online (Sandbox Code Playgroud)

这对我有用.

帕特里克

  • rowIndex和rowEnd不是相同的数字吗?两者都是使用GridPane.getRowIndex(child)获得的. (2认同)

Vov*_*kyi 7

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

Method method = gridPane.getClass().getDeclaredMethod("getNumberOfRows");
method.setAccessible(true);
Integer rows = (Integer) method.invoke(gridPane);
Run Code Online (Sandbox Code Playgroud)