用javafx画一个圆,再画一条直线,直线的中心点在这个圆的边界上运动,直线随之移动
时间: 2024-05-15 20:13:51 浏览: 52
java 画图程序 画圆 矩形 直线
3星 · 编辑精心推荐
下面是一个JavaFX程序,它会画一个圆,并且在圆的边界上运动一条直线:
```java
import javafx.animation.Animation;
import javafx.animation.PathTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// 创建一个圆形
Circle circle = new Circle(200, 200, 50);
// 创建一条直线
Line line = new Line();
line.setStartX(circle.getCenterX());
line.setStartY(circle.getCenterY() - circle.getRadius());
line.setEndX(circle.getCenterX());
line.setEndY(circle.getCenterY() - circle.getRadius() + 50);
// 创建一个PathTransition对象,用于控制直线的运动
PathTransition pathTransition = new PathTransition();
pathTransition.setDuration(Duration.seconds(3));
pathTransition.setPath(circle);
pathTransition.setNode(line);
pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
pathTransition.setCycleCount(Animation.INDEFINITE);
pathTransition.setAutoReverse(true);
// 创建一个Pane,并将圆和直线添加到其中
Pane pane = new Pane();
pane.getChildren().addAll(circle, line);
// 创建一个Scene,并将Pane添加到其中
Scene scene = new Scene(pane, 400, 400);
// 将Scene添加到primaryStage中,并显示primaryStage
primaryStage.setScene(scene);
primaryStage.show();
// 启动PathTransition动画
pathTransition.play();
}
public static void main(String[] args) {
launch(args);
}
}
```
上面的程序中,我们首先创建了一个`Circle`对象来表示圆形,并且创建了一条`Line`对象来表示直线。我们将直线的起点设置在圆的上方边界上,并且将终点设置在圆的下方边界上。接着,我们创建了一个`PathTransition`对象,将它的路径设置为圆形,并将它的节点设置为直线。我们还设置了`PathTransition`的一些属性,例如运动的持续时间、运动方向等等。最后,我们将圆和直线添加到一个`Pane`中,并且将`Pane`添加到`Scene`中。我们还启动了`PathTransition`动画,让直线沿着圆形边界运动。
阅读全文