我想检索Gridpane中一个特定单元格的内容。我在单元格中放置了带有
setConstraints(btt , 0 ,1 )
setConstraints(btt , 0 ,2 )
getChildren().add....
在我的例子中GridPane. getChildren.get(10)
不好。我想直接进入单元格(4,2)并获取其内容。
好吧,我想如果没有解决方案可以通过列和行索引从gridpane中获取特定节点,我有一个函数可以做到这一点,
private Node getNodeFromGridPane(GridPane gridPane, int col, int row) {
for (Node node : gridPane.getChildren()) {
if (GridPane.getColumnIndex(node) == col && GridPane.getRowIndex(node) == row) {
return node;
}
}
return null;
}
假设您有一个8x8的带窗格,其中i
是行,j
是列,您可以编写:
myGridPane. get儿童().get(i*8 j)
返回类型是一个对象,所以你必须强制转换它,在我的例子中是:
(StackPane)(myGridPane. get儿童().get(i*8 j))
我在这个问题中遇到了一些麻烦,因为方法GridPane. getColumnIndex(Node node)
可能会在第一行或colum中返回null
(当索引实际上为0时)。因此我使用了wrapperclassInteger
并得到了以下解决方案。也许它会帮助其他人解决同样的问题。
private Node getNodeFromGridPane(GridPane gridPane, int col, int row) {
ObservableList<Node> children = gridPane.getChildren();
for (Node node : children) {
Integer columnIndex = GridPane.getColumnIndex(node);
Integer rowIndex = GridPane.getRowIndex(node);
if (columnIndex == null)
columnIndex = 0;
if (rowIndex == null)
rowIndex = 0;
if (columnIndex == col && rowIndex == row) {
return node;
}
}
return null;
}