我有一个Vbox,其中包含Hbox的集合。每个HBox中至少有一个stackPane,每个stackPane都包含一个矩形,内部带有一些文本,如下所示:
每个框将至少有1个箭头指向其指定框,因此,例如:
我尝试使用cubicCurve并将其开始值和结束值设置为两个矩形,然后将cubicCurve附加到原始矩形的StackPane上,以查看它是否可以在较小的比例上使用:
VBox vbox = new VBox();
vbox.setSpacing(30);
vbox.setAlignment(Pos.CENTER);
for(ProcessTableData ptd : rects){
if(vbox.getChildren().size() < Integer.valueOf(ptd.getStepNum())){
HBox hbox = new HBox();
hbox.setSpacing(15);
hbox.setAlignment(Pos.CENTER);
vbox.getChildren().add(hbox);
}
HBox hbox =
(HBox)vbox.getChildren().get(Integer.valueOf(ptd.getStepNum()) - 1);
hbox.getChildren().add(createRectangle(ptd));
}
HBox hbOrig = (HBox)vbox.getChildren().get(0);
StackPane sOrig = (StackPane)hbOrig.getChildren().get(0);
Rectangle rectangleOrig = (Rectangle)sOrig.getChildren().get(0);
HBox hbDest = (HBox)vbox.getChildren().get(1);
StackPane sDest = (StackPane)hbDest.getChildren().get(0);
Rectangle rectangleDest = (Rectangle)sDest.getChildren().get(0);
int startX = (int)rectangleOrig.getX();
int startY = (int)rectangleOrig.getY();
int endX = (int)rectangleDest.getX();
int endY = (int)rectangleDest.getY();
CubicCurve curve1 = new CubicCurve(startX, startY, 200, 200, 200, 200, endX, endY);
curve1.setStroke(Color.BLACK);
curve1.setStrokeWidth(1);
curve1.setFill(null);
sOrig.getChildren().addAll(curve1);
return vbox;
但这是生成的图像
如何更改代码,使行从Box1的底部到Box2的顶部?同样,我该如何做,以便最后一个框箭头(或潜在地是一个中间框)可以循环回到较早的框,因为我以一条直线假定它会切穿这些框。预先感谢您的宝贵时间。