为了进行作业,我创建了 2 个可拖动的圆圈,并使用 javaFX 将它们连接起来。
我需要添加计算两个圆之间的距离(或线的长度)的文本,并且当我拖动圆时该文本需要不断更新,但这就是我陷入困境的地方
Circle circle1 = new Circle();
circle1.setCenterX(40);
circle1.setCenterY(40);
circle1.setRadius(10);
Circle circle2 = new Circle();
circle2.setCenterX(120);
circle2.setCenterY(150);
circle2.setRadius(10);
Line line = new Line ();
line.startXProperty().bind(circle1.centerXProperty());
line.startYProperty().bind(circle1.centerYProperty());
line.endXProperty().bind(circle2.centerXProperty());
line.endYProperty().bind(circle2.centerYProperty());
circle1.setOnMousePressed(mousePressEventHandler);
circle1.setOnMouseDragged(mouseDragEventHandler);
circle2.setOnMousePressed(mousePressEventHandler);
circle2.setOnMouseDragged(mouseDragEventHandler);
这是我的两个圆和线,我尝试过
Text distance = new Text();
distance.textProperty().bind(circle1.centerXProperty()-circle2.centerXProperty() . . .);
但是,正如您所知,我无法正常计算财产价值,而且我不知道该怎么做。
您可以创建一个 DoubleProperty
DoubleProperty distanceProperty = new SimpleDoubleProperty();
和一个 ChangeListener,您可以在其中计算距离
ChangeListener<Number> changeListener = (observable, oldValue, newValue) -> {
Point2D p1 = new Point2D(circle1.getCenterX(), circle1.getCenterY());
Point2D p2 = new Point2D(circle2.getCenterX(), circle2.getCenterY());
distanceProperty.set(p1.distance(p2));
};
指定监听者
circle1.centerXProperty().addListener( changeListener);
circle1.centerYProperty().addListener( changeListener);
circle2.centerXProperty().addListener( changeListener);
circle2.centerYProperty().addListener( changeListener);
并将 distanceProperty 绑定到文本
Text text = new Text();
text.textProperty().bind(distanceProperty.asString());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)