我通过 SceneBuilder 初始化了一个 GridPane,在控制器内部我想有条件地向 GridPane 添加一行。我不想为我初始化的行数存储一个 int,我希望能够从 GridPane 对象中获取行数。那可能吗?
问问题
13037 次
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 回答