当前位置: 首页 > 知识库问答 >
问题:

JavaFX两圈之间的距离和保持更新属性

慕乐池
2023-03-14

为了赋值,我创建了2个可拖动的圆圈,并用JavaFX将它们与line连接起来。

我需要添加文本来计算两个圆圈之间距离(或行的长度),当我拖动圆圈时,文本需要不断更新,但这是我卡在那里的地方

    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() . . .);

但是,正如你所知道的,我不能正常计算财产价值,我不知道我应该怎么做。

共有1个答案

姚建树
2023-03-14

您可以创建一个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());
 类似资料:
  • 问题内容: 我需要测量以字符串形式提供名称的两个地方之间的物理距离。由于有时名称的书写方式略有不同,因此我一直在寻找一个可以帮助我测量差异的库,然后将其与纬度和经度结合起来以选择正确的匹配项。首选语言:Java或PHP。 有什么建议? 问题答案: 看看Levenshtein距离。这是一种测量两个字符串彼此之间有多不同的方法。 希望我能正确理解你的问题;在与“经度”相同的句子中使用“距离”可能会造成

  • 问题内容: 我需要创建一个类来计算两点之间的距离。我被困住了,我是一个完全的初学者。这是我的课程: 第二课。 我不确定如何在两个定义的点之间获取点对象(中间点)。 我可以创建点对象,但不确定如何通过位于这两个点对象之间的方法返回点对象。 问题答案: 平面上的两个点(x1,y1)和(x2,y2)之间的距离为: 但是,如果您想要的只是两个点的中点,则应将中点函数更改为: 这将返回一个全新的点对象,其点

  • 返回两点之间的欧氏距离。 使用 Math.hypot() 计算两点之间的欧氏距离( Euclidean distance)。 const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); distance(1, 1, 2, 3); // 2.23606797749979

  • 本文向大家介绍顶点之间的距离和偏心距,包括了顶点之间的距离和偏心距的使用技巧和注意事项,需要的朋友参考一下 两个顶点之间的距离 它是顶点U和顶点V之间最短路径中的边数。如果有多个路径连接两个顶点,则最短路径被视为两个顶点之间的距离。 表示法-d(U,V) 从一个顶点到另一顶点可以有任意数量的路径。其中,您只需要选择最短的一个即可。 示例 看一下下图- 在这里,从顶点“ d”到顶点“ e”或简称“

  • 问题内容: 假设我有x1,y1,还有x2,y2。 我如何找到它们之间的距离?这是一个简单的数学函数,但是此在线代码段吗? 问题答案: dist = sqrt( (x2 - x1)2 + (y2 - y1)2 ) 正如其他人指出的那样,您也可以使用等效的内置函数:

  • 我试图将X Y Z变量的数组或列表传递给计算欧几里德距离的方法。 这是我的方法: 这是我的主要代码: 输出为:1.7782794。。应该是10的时候。有什么想法吗?