Здесь я вижу некоторые проблемы.
Во-первых, setX()
и setY()
не работают, когда узел находится внутри какого-то подкласса Pane
, который управляет макетом для вас. Это связано с тем, что менеджер компоновки переопределяет это значение при попытке разметки дочерних элементов.
Во-вторых, вы добавляете метку к корневому узлу, в результате чего все Text
собираются в одном месте.
Это то, что я бы сделал, используя StackPane
, который позволяет вам штабелировать несколько узлов в одном месте. Кроме того, он автоматически центрирует всех своих детей.
// Stack Gridpane into root pane to organize circles on rails
GridPane grid = new GridPane();
// loop to instantiate all circles in a 5x10 grid, add to gridpane
for (int row = 0; row < 5; row++) {
for (int count = 10; count > 0; count--) {
StackPane sp = new StackPane();
grid.add(sp, count, row);
Circle circle = new Circle();
circle.setRadius(20);
// generate Labels and position on circle
Text label = new Text(Integer.toString(count));
label.getStyleClass().add("text");
label.setFill(Color.RED); // Added so it's visible
// Don't need these
//label.setX(circle.getCenterX());
//label.setY(circle.getCenterY());
//bind label to circle movement
//label.translateXProperty().bind(circle.translateXProperty());
//root.getChildren().add(label);
// Add circle and label to StackPane so it'll handle layout for you
sp.getChildren().addAll(circle, label);
}
}
root.getChildren().add(grid);
Из того, что я вижу, у вас есть перевод. Это было бы немного сложно, в зависимости от того, что именно вам нужно.