JavaFX增加一个圆';通过单击它来调整半径
我试图创建一个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;
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();
});
});
现在只需去掉圆圈
实例字段和与之关联的处理程序