JavaFX - Как получить AnchorPane внутри GridPane и добавить текст на него? - PullRequest
0 голосов
/ 06 июля 2018

Я знаю, что могу добавить Text или Node внутри GridPane с помощью следующего кода

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

Но у меня есть AnchorPane внутри каждого rows и columns из GridPane, который вручную вставляется с помощью SceneBuilder, внутри AnchorPane Я хочу добавить Text. Что-то вроде получения детей от GridPane и добавления Text к нему.

Я делаю это так, но это не работает:

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

Ответы [ 2 ]

0 голосов
/ 06 июля 2018
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);
        }
    }

  }
}
0 голосов
/ 06 июля 2018
 gridPane.getChildren().add(text);

добавляет text к GridPane в строке 0, столбце 0, т. Е. Имеет тот же эффект, что и

 gridPane.add(text, 0, 0);

(На самом деле это не то же самое на 100%, но в этом контексте разница не важна.)

Предполагая, что каждый дочерний элемент GridPane является AnchorPane, вам необходимо извлечь каждого дочернего элемента, привести его к Pane и добавить Text в его дочерний список:

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

Конечно, вы можете использовать разные подходы для извлечения элементов из списка вместо расширений цикла. Порядок дочерних элементов в списке соответствует порядку элементов в элементе <children> элемента <GridPane> в файле fxml. (Это порядок, в котором они отображаются в иерархическом представлении SceneBuilder.)

...