JavaFX: Как сохранить постоянное расстояние между двумя полигонами, если один / оба из них изменены (масштабированы)? - PullRequest
0 голосов
/ 11 марта 2020

У меня соты шестиугольников в моем GUI, и их размер постоянно меняется динамически. Мне нужно найти способ масштабировать эти формы одновременно, не перекрывая друг друга.

Я понял, что расстояние между краями должно оставаться постоянным, но это все. Мне действительно нужна помощь в переводе этого кода. Любая помощь будет высоко ценится! В настоящее время я использую Scene Builder. Я попытался привязать расстояние между центрами многоугольников к одному из многоугольников. Вот мой код (который не работает):

public class Controller implements Initializable {
    @FXML
    private AnchorPane root ;
    @FXML
    private Polygon poly1;
    @FXML
    private Polygon poly2;

@Override
public void initialize(URL location, ResourceBundle resources) {

    DoubleProperty distanceProperty = new SimpleDoubleProperty();

    ChangeListener<Number> changeListener = (observable, oldValue, newValue) -> {

        Point2D p1 = new Point2D(poly1.getLayoutX(), poly1.getLayoutY());
        Point2D p2 = new Point2D(poly2.getLayoutX(), poly2.getLayoutY());
        distanceProperty.set(p1.distance(p2));
    };
    poly1.layoutXProperty().addListener(changeListener);
    poly2.layoutXProperty().addListener(changeListener);
    poly1.layoutYProperty().addListener(changeListener);
    poly2.layoutYProperty().addListener(changeListener);

    poly1.layoutYProperty().bind(distanceProperty);
    poly1.layoutXProperty().bind(distanceProperty);

    // changing the size of poly1
    double initialScaleX = poly1.getScaleX();
    double initialScaleY = poly1.getScaleY();
    poly1.setScaleX(initialScaleX*2.0);
    poly1.setScaleY(initialScaleY*2.0);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...