使用鼠标单击点绘制圆(javafx)

g9icjywg  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(315)

在你阅读之前,这是我的家庭作业,因此问题的要求将是具体的。
我正在编写一个程序,点击在画布上画一条线,并显示圆形,如您拖动鼠标的位置所示。我的代码所做的是,它点击开始一个点,无论你拖动鼠标到哪里,放开鼠标就是圆圈。但是,我希望我的圆以选定的点开始(鼠标单击并释放),然后将鼠标和圆拖动到它所在的位置,当再次单击鼠标时,它将在画布上固定圆。我尝试的是制作两个鼠标事件侦听器,一个用于初始化圆,另一个用于结束圆的半径。但那没用。我还尝试将getx()和gety()放在main方法中,但也没有成功。
这是我的密码

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.scene.shape.Line;

public class Main extends Application {
    private Circle circle;

    @Override
    public void start(Stage primaryStage) {
        Pane root = new Pane();
        circle = new Circle(-10,-10,-10);
        circle.setFill(Color.TRANSPARENT);
        circle.setStroke(Color.BLACK);

        root.getChildren().add(circle);

        root.setOnMousePressed(new MousePressEventHandler());
        root.setOnMouseDragged(new MouseDragEventHandler());

        Scene scene = new Scene(root, 600, 600);
        primaryStage.setTitle("blank");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private class MousePressEventHandler implements EventHandler<MouseEvent> {
        @Override
        public void handle(MouseEvent e) {

            circle.setCenterX(e.getX());
            circle.setCenterY(e.getY());

            circle.setRadius(e.getX());
            circle.setRadius(e.getY());

        }
    }

    private class MouseDragEventHandler implements EventHandler<MouseEvent> {
        @Override
        public void handle(MouseEvent e) {
            circle.setRadius(e.getX());
            circle.setRadius(e.getY());

        }
    }

    public static void main(String[] args) {

        Application.launch(args);
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题