Java fx-使用QuadCurve和多边形(三角形)绑定的弯曲箭头

时间:2018-11-18 11:59:44

标签: javafx

我想创建一个带有箭头的曲线,该曲线位于两个节点之间(在我的情况下,这两个节点是StackPanes)。拖动StackPanes时,该行需要相应移动。

所以我想要这样的东西: 堆栈窗格是带有文本的圆,线是QuadCurve,箭头是多边形(三角形)

enter image description here

我设法创建了链接两个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时也无法正确移动。

我该如何解决这个问题?

谢谢。

0 个答案:

没有答案