在不知道其引用的情况下删除形状 (javafx)
Remove Shape without knowing its reference (javafx)
我想通过左键单击在我的光标处创建一个圆圈(这有效)并通过右键单击删除光标下方的圆圈(这不起作用)。
我的问题是我不知道如何在没有引用(名称)的情况下访问圆,因为所有圆都是在运行时创建的。我听说仿制药可以解决我的问题,但我并不真正理解它们。如果有其他方法请告诉我。
代码如下:
public class circle extends Application {
@Override
public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 600, 600, Color.ALICEBLUE);
scene.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton() == MouseButton.PRIMARY) {
root.getChildren().add(new Circle(event.getSceneX(), event.getSceneY(), 10, Color.DARKCYAN));
}
// Does not work. It should delete the circle below the cursor
if(event.getButton() == MouseButton.SECONDARY) {
root.getChildren().remove((int)event.getSceneX(), (int)event.getSceneX());
}
}
});
stage.setScene(scene);
stage.setTitle("Thx for helping me :)");
stage.show();
}
public static void main(String[] args) {
launch(args);
}}
如果我误解了这个词"reference",我很抱歉。我认为它是你在创建对象时给它起的名字。 ( 圆 "reference" = 新圆 (); )
谢谢你帮助我!
直接注册带圆圈的右键监听:
scene.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton() == MouseButton.PRIMARY) {
Circle circle = new Circle(event.getSceneX(), event.getSceneY(), 10, Color.DARKCYAN);
circle.setOnMouseClicked(e -> {
if (e.getButton() == MouseButton.SECONDARY) {
root.getChildren().remove(circle);
}
});
root.getChildren().add(circle);
}
}
});
我想通过左键单击在我的光标处创建一个圆圈(这有效)并通过右键单击删除光标下方的圆圈(这不起作用)。
我的问题是我不知道如何在没有引用(名称)的情况下访问圆,因为所有圆都是在运行时创建的。我听说仿制药可以解决我的问题,但我并不真正理解它们。如果有其他方法请告诉我。
代码如下:
public class circle extends Application {
@Override
public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 600, 600, Color.ALICEBLUE);
scene.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton() == MouseButton.PRIMARY) {
root.getChildren().add(new Circle(event.getSceneX(), event.getSceneY(), 10, Color.DARKCYAN));
}
// Does not work. It should delete the circle below the cursor
if(event.getButton() == MouseButton.SECONDARY) {
root.getChildren().remove((int)event.getSceneX(), (int)event.getSceneX());
}
}
});
stage.setScene(scene);
stage.setTitle("Thx for helping me :)");
stage.show();
}
public static void main(String[] args) {
launch(args);
}}
如果我误解了这个词"reference",我很抱歉。我认为它是你在创建对象时给它起的名字。 ( 圆 "reference" = 新圆 (); )
谢谢你帮助我!
直接注册带圆圈的右键监听:
scene.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton() == MouseButton.PRIMARY) {
Circle circle = new Circle(event.getSceneX(), event.getSceneY(), 10, Color.DARKCYAN);
circle.setOnMouseClicked(e -> {
if (e.getButton() == MouseButton.SECONDARY) {
root.getChildren().remove(circle);
}
});
root.getChildren().add(circle);
}
}
});