如何解决我可以将圆的内部和外部分开吗?我需要一个可点击的区域,只在使用 javafx 的笔画上
我想构建一个程序,它可以在一个圆形的三角形上找到角度和不同的东西。 我构建了圆圈,我可以通过左键单击添加点并通过右键单击删除它们,但我希望只有当它们在圆圈笔划上时才添加这些点。我不知道如何将笔触与 AnchorPane 的其余部分分开。
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Circle;
import javafx.scene.shape.StrokeType;
import javafx.stage.Stage;
import java.io.FileInputStream;
import java.io.IOException;
public class Main extends Application {
FXMLLoader fxmlLoader = new FXMLLoader();
Parent parent = fxmlLoader.load(new FileInputStream("Circle.fxml"));
AnchorPane root = (AnchorPane) parent.lookup("#root");
public Main() throws IOException {
}
private Circle makeCircle(double drawX,double drawY) {
Circle circle = new Circle(drawX,drawY,5,Color.CORAL);
circle.setStroke(Color.BLACK);
return circle;
}
private void deleteCircle(double deleteX,double deleteY) {
ObservableList<Node> list = root.getChildren();
for (int i = list.size() - 1; i >= 0; i--) {
Node circle = list.get(i);
if (circle instanceof Circle && circle.contains(deleteX,deleteY)) {
root.getChildren().remove(circle);
break;
}
}
}
public void start(final Stage primaryStage) throws Exception {
Scene scene = new Scene(parent);
primaryStage.setScene(scene);
primaryStage.show();
Label label1 = (Label) parent.lookup("#label1");
Label label2 = (Label) parent.lookup("#label2");
Label label3 = (Label) parent.lookup("#label3");
Circle circleBig = new Circle();
circleBig.setRadius(200);
circleBig.setCenterY(175);
circleBig.setCenterX(350);
circleBig.setFill(Paint.valueOf("#FFFF"));
circleBig.setStrokeWidth(4);
circleBig.setStrokeMiterLimit(10);
circleBig.setStrokeType(StrokeType.CENTERED);
circleBig.setStroke(Color.valueOf("0x000000"));
root.getChildren().add(circleBig);
root.setOnMouseClicked(e -> {
double drawX = e.getX();
double drawY = e.getY();
if (e.getButton() == MouseButton.PRIMARY) {
Circle circle = makeCircle(drawX,drawY);
root.getChildren().add(circle);
} else if (e.getButton() == MouseButton.SECONDARY) {
deleteCircle(drawX,drawY);
}
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。