Связывание фигур в JavaFX - PullRequest
       0

Связывание фигур в JavaFX

0 голосов
/ 09 декабря 2018

Я пытаюсь связать некоторые фигуры, поэтому, когда я перетаскиваю круг, линия также будет следовать за ним.Круг перемещается, когда я перетаскиваю его, но линия не следует.Я пытаюсь использовать .bind, но, похоже, ничего не делает.Вот некоторые из соответствующих методов.

private Line connect(Line line, Circle startNode, Circle endNode) {
        line.startXProperty().bind(startNode.centerXProperty());
        line.startYProperty().bind(startNode.centerYProperty());
        line.endXProperty().bind(endNode.centerXProperty());
        line.endYProperty().bind(endNode.centerYProperty());

    return line;
}    

private void pointsToShapes() {
    connect(leftArm, neckNode, leftHandNode);

    leftHandNode.setCenterX(leftHand.x);
    leftHandNode.setCenterY(leftHand.y);

    neckNode.setCenterX(shoulder.x);
    neckNode.setCenterY(shoulder.y);

}
    leftHandNode.setOnMousePressed(mp);

    leftHandNode.setOnMouseDragged(md);     

    //mouse pressed
    EventHandler<MouseEvent> mp = new EventHandler<MouseEvent>() {
    @Override
       public void handle(MouseEvent t) {
        System.out.println("pressed");
        sceneX = t.getSceneX();
        sceneY = t.getSceneY();
        translateX = ((Circle)(t.getSource())).getTranslateX();
        translateY = ((Circle)(t.getSource())).getTranslateY();
        }
    };

   //mouse dragged 
    EventHandler<MouseEvent> md = new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent t) {
            System.out.println("dragged");
            double offsetX = t.getSceneX() - sceneX;
            double offsetY = t.getSceneY() - sceneY;
            double newTranslateX = translateX + offsetX;
            double newTranslateY = translateY + offsetY;

            ((Circle)(t.getSource())).setTranslateX(newTranslateX);
            ((Circle)(t.getSource())).setTranslateY(newTranslateY);
        }
    };

1 Ответ

0 голосов
/ 10 декабря 2018

Как уже упоминалось @fabian, необходимо учитывать свойства перевода при привязке к свойствам строки.

private Line connect(Line line, Circle startNode, Circle endNode) {
        line.startXProperty().bind(startNode.centerXProperty().add(startNode.translateXProperty()));
        line.startYProperty().bind(startNode.centerYProperty().add(startNode.translateYProperty()));
        line.endXProperty().bind(endNode.centerXProperty().add(endNode.translateXProperty()));
        line.endYProperty().bind(endNode.centerYProperty().add(endNode.translateYProperty()));

    return line;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...