我知道我可以使用以下代码在Text
内添加Node
或GridPane
Text text = new Text("Hello World");
gridPane.add(text, row, column);
但是我在{{1}的每个AnchorPane
和rows
中都有columns
,{{1}的GridPane
是在SceneBuilder
的帮助下手动插入的}我要添加AnchorPane
。就像获得Text
的孩子并在其上添加GridPane
一样。
我这样做是这样,但它不起作用:
Text
答案 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的层次结构视图中出现的顺序。)