我可以在窗格上创建带有for for next循环的节点,但是没有能力 为这些节点分配一个fx:id或id 这可能是第一吗?如果是这样,我需要添加到我的代码中? 或者我可以选择使用for next循环将信息写入FXML文件吗?
<div id="r"/>
答案 0 :(得分:1)
fx:id
只是一种机制,用于获取对FXML中定义的元素的引用。如果您仍然在控制器中定义节点,则根本不需要(或实际上,无法使用)fx:id
。
您在创建时已经引用了Circle
。所以,只要在那里做任何你需要的事情。这是一个简单的例子(我清理了你的代码,使其更简洁):
private void makeNode() {
for (int circleIndex = 0 ; circleIndex < 42 ; circleIndex++) {
int column = circleIndex % 7 ;
int row = circleIndex / 7 ;
double x = 40 + 120 * column ;
double y = 40 + 120 * row ;
Circle circle = new Circle(x, y, 16);
circle.setFill(Color.YELLOW);
circle.setStroke(Color.BLACK);
circle.setStrokeWidth(4.0);
pane.getChildren().add(circle);
circle.setOnMouseClicked(e -> {
System.out.println("Clicked on ["+column+", "+row+"]");
});
}
}