У меня соты шестиугольников в моем 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);
}
}