我想创建一个带有箭头的曲线,该曲线位于两个节点之间(在我的情况下,这两个节点是StackPanes)。拖动StackPanes时,该行需要相应移动。
所以我想要这样的东西: 堆栈窗格是带有文本的圆,线是QuadCurve,箭头是多边形(三角形)
我设法创建了链接两个StackPanes节点之间的曲线,并且当使用鼠标拖动StackPanes时,该线会相应移动:
QuadCurve line = new QuadCurve();
line.setStroke(Color.BLACK);
line.setFill(null);
line.setStrokeWidth(2);
line.startXProperty().bind(vertexClickedOn.layoutXProperty().add(vertexClickedOn.translateXProperty()).add(vertexClickedOn.widthProperty().divide(2)));
line.startYProperty().bind(vertexClickedOn.layoutYProperty().add(vertexClickedOn.translateYProperty()).add(vertexClickedOn.heightProperty().divide(2)));
line.endXProperty().bind(vertexTo.layoutXProperty().add(vertexTo.translateXProperty()).add(vertexTo.widthProperty().divide(2)));
line.endYProperty().bind(vertexTo.layoutYProperty().add(vertexTo.translateYProperty()).add(vertexTo.heightProperty().divide(2)));
line.controlXProperty().bind((line.startXProperty().add(line.endXProperty()).divide(2)));
line.controlYProperty().bind((line.startYProperty().add(line.endYProperty()).divide(2)).add(150));
VertexClickedOn是StackPane,是行开始处,vertexTo是另一个StackPane,是行结束处(箭头应在哪里)。
要制作箭头,我创建了这个三角形,并尝试将其绑定到这样的直线上:
Polygon arrowHead = new Polygon();
arrowHead.getPoints().addAll(new Double[]{
0.0, 0.0,
20.0, 10.0,
10.0, 20.0 });
arrowHead.setFill(Color.BLACK);
arrowHead.layoutXProperty().bind(line.endXProperty().add(line.translateXProperty()));
arrowHead.layoutYProperty().bind(line.endYProperty().add(line.translateYProperty()));
但是,三角形在StackPane下方,并且在用鼠标拖动StackPanes时也无法正确移动。
我该如何解决这个问题?
谢谢。