提问者:小点点

如何访问在网格窗格中生成的单元格?


我需要在我的网格窗格中的特定单元格(居中)中添加一个形状。

这是我的网格窗格中单元格(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。我需要类似的东西,

居中节点。获取儿童()。添加(形状);


共1个答案

匿名用户

假设您只添加StackPanes作为网格窗格的子节点,您只需要强制转换结果:

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