Есть ли способ привязать узел к средней точке линии? - PullRequest
1 голос
/ 06 июля 2019

Что мне нужно сделать, это нарисовать текст в середине линии.Вот что я изначально придумал:

Text tWeight = new Text(Integer.toString(e.getWeight()));
tWeight.setX((e.getEdge().getStartX() + e.getEdge().getEndX()) / 2);
tWeight.setY((e.getEdge().getStartY() + e.getEdge().getEndY()) / 2);

Где e.getEdge() возвращает строку.
Проблема в том, что возвращаемая строка также имеет связь между двумя узлами, поэтому, когда я пытаюсь получитьего позиция возвращает координаты верхнего левого угла панели, где находится линия.Есть ли способ (или хитрость) сделать эту работу с самого начала?

Заранее спасибо

1 Ответ

1 голос
/ 06 июля 2019

DoubleExpression (супертип DoubleProperty) предоставляет методы add(ObservableNumberValue) и multiply(double).Вы можете использовать их, чтобы создать выражение для (startX+endX)*0.5 (или эквивалент для y):

Line l = e.getEdge();
tWeight.xProperty().bind(l.startXProperty().add(l.endXProperty()).multiply(0.5));
tWeight.yProperty().bind(l.startYProperty().add(l.endYProperty()).multiply(0.5));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...