JavaFX-如何在GridPane中获取AnchorPane并在其上添加文本?

时间:2018-07-06 07:55:04

标签: javafx gridpane

我知道我可以使用以下代码在Text内添加NodeGridPane

Text text = new Text("Hello World");
gridPane.add(text, row, column);

但是我在{{1}的每个AnchorPanerows中都有columns,{{1}的GridPane是在SceneBuilder的帮助下手动插入的}我要添加AnchorPane。就像获得Text的孩子并在其上添加GridPane一样。

我这样做是这样,但它不起作用:

Text

2 个答案:

答案 0 :(得分:1)

for(int i = 0; i < row; i++){
  for(int j = 0; j < column; j++){
     Text text = new Text("Hello World!");

    for(Node node : gridPane.getChildren()){
        Integer r = gridPane.getRowIndex(node);
        Integer c = gridPane.getColumnIndex(node);
        if(r!=null && r.intValue() == row && c != null && c.intValue() == column){
            AnchorPane anchorPane = (AnchorPane)node;
            anchorPane.getChildren().add(txt);
        }
    }

  }
}

答案 1 :(得分:0)

 gridPane.getChildren().add(text);

text添加到第0行第0列的GridPane,即,其作用与

相同
 gridPane.add(text, 0, 0);

(实际上这并不是100%相同,但是在这种情况下,差异并不重要。)

假设GridPane的每个子代都是AnchorPane,则需要检索每个子代,将其转换为Pane并将Text添加到它的子代列表中:< / p>

for (Node child : gridPane.getChildren()) {
    Pane pane = (Pane) child;
    Text text = new Text("Hello World!");
    pane.getChildren().add(text);
}

当然,您可以使用其他方法从列表中检索元素,而不是使用增强for循环。列表中子级的顺序与fxml文件中<children>元素的<GridPane>元素中的元素顺序匹配。 (这是它们在SceneBuilder的层次结构视图中出现的顺序。)