我需要在我的网格窗格中的特定单元格(居中)中添加一个形状。
这是我的网格窗格中单元格(StackPane)的制作方式:
private StackPane createCell() {
StackPane cell = new StackPane();
cell.getStyleClass().add("cell");
return cell;
}
我尝试过使用以下方法获取居中单元格:
private Node getCenteredNodeGridPane(GridPane gridPane, int col, int row) {
for (Node node : gridPane.getChildren()) {
if (GridPane.getColumnIndex(node) == col/2 && GridPane.getRowIndex(node) == row/2) {
return node;
}
}
return null;
}
然后,获取节点:
Node centeredNode = getCenteredNodeGridPane(grid, 20, 20);
centeredNode ...... ??????
但是我无法访问此节点的实际StackPane。我需要类似的东西,
居中节点。获取儿童()。添加(形状);
假设您只添加StackPane
s作为网格窗格的子节点,您只需要强制转换结果:
StackPane centeredNode = (StackPane) getCenteredNodeGridPane(grid, 20, 20);
根据您的确切要求,您当然可以在getCenteredNodeGridPane
方法中执行此操作,并添加类型检查:
private StackPane getCenteredNodeGridPane(GridPane gridPane, int col, int row) {
for (Node node : gridPane.getChildren()) {
if (node instanceof StackPane
&& GridPane.getColumnIndex(node) == col/2
&& GridPane.getRowIndex(node) == row/2) {
return (StackPane) node;
}
}
return null;
}