JavaFX增加一个圆';通过单击它来调整半径

JavaFX增加一个圆';通过单击它来调整半径,java,javafx,geometry,Java,Javafx,Geometry,我试图创建一个JavaFX程序,当你点击屏幕时,它会创建一个圆圈。一次可以有很多圈。但我想不出一个解决办法,当我再次点击一个圆时,如何增加它的半径 public class Controller implements Initializable { @FXML private Button reset; @FXML private AnchorPane anchor; @FXML private BorderPane border;

我试图创建一个JavaFX程序,当你点击屏幕时,它会创建一个圆圈。一次可以有很多圈。但我想不出一个解决办法,当我再次点击一个圆时,如何增加它的半径

public class Controller implements Initializable {

    @FXML
    private Button reset;

    @FXML
    private AnchorPane anchor;

    @FXML
    private BorderPane border;

    Circle circle = new Circle();
    int radius = 20;

    public void initialize (URL location, ResourceBundle resources) {
        anchor.setOnMouseClicked(event -> {
            border.getChildren().add(circle = new Circle());
            circle.setCenterX(event.getX());
            circle.setCenterY(event.getY());
            circle.setRadius(radius);     
        });

        reset.setOnAction(event -> {
            border.getChildren().clear();
        });

        circle.setOnMouseClicked(event -> {
            circle.setRadius(radius * 1.5);
        });
    }
}

声明为
圆的字段
永远不会添加到场景图中。因此它永远不会出现,其
mouseClicked
处理程序也永远不会被调用

另一方面,添加到场景图中的圆没有与之关联的鼠标单击处理程序。创建处理程序时需要注册处理程序:

anchor.setOnMouseClicked(event -> {
    Circle circle = new Circle();
    border.getChildren().add(circle);
    circle.setCenterX(event.getX());
    circle.setCenterY(event.getY());
    circle.setRadius(radius);
    circle.setOnMouseClicked(e -> {
        circle.setRadius(circle.getRadius() * 1.5);
        // prevent event from propagating to pane:
        e.consume();
    });
});
现在只需去掉
圆圈
实例字段和与之关联的处理程序