Вопрос

I initialized a GridPane through SceneBuilder and inside the controller I want to conditionally add a row to the GridPane. I do not want to store an int for how many rows I initialized, I want to be able to get the number of rows from the GridPane object. Is that possible?

Это было полезно?

Решение

Hej j will, try this method:

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;
    }

This worked for me.

Patrick

Другие советы

In my case I used Java Reflections ( GridPane.java has private method getNumberOfRows() ):

Method method = gridPane.getClass().getDeclaredMethod("getNumberOfRows");
method.setAccessible(true);
Integer rows = (Integer) method.invoke(gridPane);

With java 9, you can do this:

myGridPane.getRowCount();

This works for me

GridPane.getRowConstraints().size()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top