在你阅读之前,这是我的家庭作业,因此问题的要求将是具体的。
我正在编写一个程序,点击在画布上画一条线,并显示圆形,如您拖动鼠标的位置所示。我的代码所做的是,它点击开始一个点,无论你拖动鼠标到哪里,放开鼠标就是圆圈。但是,我希望我的圆以选定的点开始(鼠标单击并释放),然后将鼠标和圆拖动到它所在的位置,当再次单击鼠标时,它将在画布上固定圆。我尝试的是制作两个鼠标事件侦听器,一个用于初始化圆,另一个用于结束圆的半径。但那没用。我还尝试将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);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!