【发布时间】:2015-12-11 19:53:21
【问题描述】:
我可以在带有 for next 循环的窗格上创建节点,但没有能力 为这些节点分配一个 fx:id 或一个 id 这可能是第一名吗?如果是这样,我需要在我的代码中添加什么? 或者我是否可以选择使用 for next 循环将信息写入 FXML 文件?
private void MakeNode(){
for (int A = 1; A <= 42; A++){
if(A==1){
X=40;
Y=40;
}else if(A>1 && A<=7){
X = X + 120;
Y = 40;
}else if(A==8){
X = 40;
Y = 160;
}else if(A>8&& A<=14){
X = X + 120;
Y = 160;
}else if(A==15){
X = 40;
Y = 280;
}else if(A>15&& A<=21){
X = X + 120;
Y = 280;
}else if(A==22){
X = 40;
Y = 400;
}else if(A>22&& A<=28){
X = X + 120;
Y = 400;
}else if(A==29){
X = 40;
Y = 520;
}else if(A>29&& A<=35){
X = X + 120;
Y = 520;
}else if(A==36){
X = 40;
Y = 640;
}else if(A>36&& A<=42){
X = X + 120;
Y = 640;
}
cirA = new Circle(X,Y,16);
//fxid = cir.concat(String.valueOf(A));
//fxid = cir+String.valueOf(A);
//cirA.setId(fxid);
cirA.setFill(Color.YELLOW);
cirA.setStroke(Color.BLACK);
cirA.setStrokeWidth(4.0);
pane.getChildren().add(cirA);
}
}
【问题讨论】:
-
fx:id仅用于使 FXML 中定义的节点在控制器中的 Java 代码中可用。由于您的圈子已经在 Java 中定义,因此您的问题没有任何意义。你到底想做什么? -
顺便说一句,不要那么大的
if-else构造,而是:int column = (A-1) % 7;int row = (A-1)/7;X = 40 +120 *column;Y = 40 + 120 * row;。 -
@James_D 我正在尝试创建节点然后操作节点。例如,如果最终用户单击圆,则从一个圆到相邻圆绘制一条线 Horz。我变得懒惰并且厌倦了一次创建一个节点。如果没有 fx:id,很难将程序逻辑应用于节点。
-
像这样在循环中创建它们是正确的方法。但是,如果没有 FXML(或者如果没有在 FXML 中定义圆圈),则设置
fx:id根本没有意义。是什么阻止您使用现有代码做您想做的事情? -
@James_D 我确实有这个项目的 fxml 文件。我发现节点有一个索引号。和 X 和 Y 值,但这使得节点的管理不太令人满意。我已经尝试过使用 css id 来管理节点,但非常麻烦。正如我所说,我懒得一次只制作一个节点,感谢您的帮助