У меня есть Vbox с коллекцией Hbox.В каждом HBox есть по крайней мере одна стек-панель, каждая из которых содержит прямоугольник с текстом внутри, как показано ниже:

В каждом поле будет по крайней мере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?Также, как я могу сделать так, чтобы стрелка последних блоков (или, потенциально, средняя коробка) могла возвращаться к более ранней коробке, как я предполагаю, что с прямой линией она будет просто прорезать коробки.Заранее спасибо за ваше время.