【发布时间】:2017-09-22 02:39:30
【问题描述】:
我被书中的一个练习弄糊涂了。它要求我每次单击鼠标左键时在鼠标箭头的位置上创建一个圆圈,然后如果我的鼠标正好在这个圆圈中并单击右键,则删除该节点。在窗格中添加圆圈很容易,所以我可以快速完成它但很难删除它,所以我被困在这部分,有人可以添加一些代码来删除圆圈吗?
package com.company;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import java.util.ArrayList;
public class AddOrDeletePoint extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new Pane();
double radius = 5;
pane.setOnMouseClicked(e -> {
double X = e.getSceneX();
double Y = e.getSceneY();
Circle circle = new Circle(X, Y, radius);
circle.setFill(Color.WHITE);
circle.setStroke(Color.BLACK);
if (e.getButton() == MouseButton.PRIMARY) {
pane.getChildren().add(circle);
} else if (e.getButton() == MouseButton.SECONDARY) {
pane.getChildren().remove(circle);//this is the remove part, but it does not work!
}
});
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
primaryStage.show();
}
}
【问题讨论】:
-
“有人可以添加一些代码吗”不是真的,伙计。
-
对不起,我的表述可能有点模糊,我的形象比较清晰。
-
想想你需要什么来解决这个问题。首先,您不能删除刚刚创建的圈子。您必须删除之前添加的那个。所以你必须把它们放在某种集合中。然后,当用户右键单击时,您必须遍历它们并根据鼠标单击的 x、y 位置找到要删除的圆圈。完成每个步骤。