JavaFX:基于圆心更新双精度

JavaFX:基于圆心更新双精度,java,javafx,text,properties,binding,Java,Javafx,Text,Properties,Binding,我正在构建一个GUI界面,其中有一个可以拖动的圆圈。圆的顶部是显示圆心当前x和y坐标总和的文本 唯一的问题是,当我移动它们时,显示的数字保持不变。这些值从基于圆在起点的位置进行的计算开始,但不会随着圆的移动而改变。正如你可能猜到的,我希望它能显示随着圆圈的拖动和计算的完成,数字的变化 代码: 我知道我应该找到一种方法将圆的当前位置绑定到双精度值。我需要双倍值来计算总和。我只需要在拖动圆时更新x和y值。我在这里画了一个空白。您可以让事件处理程序更新文本: circle.setOnMouseDra

我正在构建一个GUI界面,其中有一个可以拖动的圆圈。圆的顶部是显示圆心当前x和y坐标总和的文本

唯一的问题是,当我移动它们时,显示的数字保持不变。这些值从基于圆在起点的位置进行的计算开始,但不会随着圆的移动而改变。正如你可能猜到的,我希望它能显示随着圆圈的拖动和计算的完成,数字的变化

代码:


我知道我应该找到一种方法将圆的当前位置绑定到双精度值。我需要双倍值来计算总和。我只需要在拖动圆时更新x和y值。我在这里画了一个空白。

您可以让事件处理程序更新文本:

 circle.setOnMouseDragged(e ->  {
     circle.setCenterX(e.getX());
     circle.setCenterY(e.getY());
     addCoordinates.setText(e.getX() +"-"+e.getY());
 });
或使用绑定:

    Label addCoordinates = new Label();
    addCoordinates.layoutXProperty().bind(circle.centerXProperty());
    addCoordinates.layoutYProperty().bind(circle.centerYProperty());

    SimpleStringProperty centerX = new SimpleStringProperty();
    centerX.bind(Bindings.createStringBinding( ()->String.valueOf(circle.centerXProperty().get()), circle.centerXProperty()));
    
    SimpleStringProperty centerY = new SimpleStringProperty();
    centerY.bind(Bindings.createStringBinding( ()->String.valueOf(circle.centerYProperty().get()), circle.centerYProperty()));

    addCoordinates.textProperty().bind(Bindings.concat(centerX,"-",centerY));

不要删除并重新发布同一个问题,而是编辑上一个问题,使其成为可回答的问题。我对stackoverflow不太熟悉。但现在无法编辑它。首先要在拖动圆时更新文本。@rabidrabbit为什么不能编辑它?因为我删除了它。有没有办法取消删除它?
    Label addCoordinates = new Label();
    addCoordinates.layoutXProperty().bind(circle.centerXProperty());
    addCoordinates.layoutYProperty().bind(circle.centerYProperty());

    SimpleStringProperty centerX = new SimpleStringProperty();
    centerX.bind(Bindings.createStringBinding( ()->String.valueOf(circle.centerXProperty().get()), circle.centerXProperty()));
    
    SimpleStringProperty centerY = new SimpleStringProperty();
    centerY.bind(Bindings.createStringBinding( ()->String.valueOf(circle.centerYProperty().get()), circle.centerYProperty()));

    addCoordinates.textProperty().bind(Bindings.concat(centerX,"-",centerY));