编写一个程序,在面板显示显示一个风车,并实现旋转的效果。
import javafx.animation.Animation;
import javafx.animation.Interpolator;
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Windmill extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Windmill");
primaryStage.setResizable(false);
Pane pane = getPane(200);
Scene scene = new Scene(pane, 500, 500, Color.WHITE);
// Button btnSize=new Button("变大");
// btnSize.setLayoutX(450);
// btnSize.setLayoutY(70);
// btnSize.setOnAction(new EventHandler<ActionEvent>() {
// @Override
// public void handle(ActionEvent event) {
// Pane p=getPane(300);
// HBox hbox=new HBox();
// hbox.getChildren().add(p);
// Scene scene = new Scene(hbox, 500, 500, Color.WHITE);
// RotateTransition rt = new RotateTransition(Duration.seconds(3), p);
// rt.setByAngle(360);
// rt.setCycleCount(Animation.INDEFINITE);
// rt.setInterpolator(Interpolator.LINEAR);
// rt.play();
// primaryStage.setScene(scene);
// primaryStage.show();
// }
// });
//btnSize.setLayoutX();
//动画
RotateTransition rt = new RotateTransition(Duration.seconds(3), pane);
rt.setByAngle(360);
rt.setCycleCount(Animation.INDEFINITE);
rt.setInterpolator(Interpolator.LINEAR);
rt.play();
primaryStage.setScene(scene);
primaryStage.show();
}
Pane getPane(int size) {
Pane pane = new Pane();
Circle circle=new Circle(250,250,size+10,Color.GREEN);
Circle circle2=new Circle(250,250,size,Color.WHITE);
Arc arc1 = new Arc();
arc1.setFill(Color.RED);
arc1.setCenterX(250.0f);
arc1.setCenterY(250.0f);
arc1.setRadiusX(size);
arc1.setRadiusY(size);
arc1.setStartAngle(30.0f);
arc1.setLength(60.0f);
arc1.setType(ArcType.ROUND);
Arc arc2 = new Arc();
arc2.setFill(Color.RED);
arc2.setCenterX(250.0f);
arc2.setCenterY(250.0f);
arc2.setRadiusX(size);
arc2.setRadiusY(size);
arc2.setStartAngle(30.0f+270.0f);
arc2.setLength(60.0f);
arc2.setType(ArcType.ROUND);
Arc arc3 = new Arc();
arc3.setFill(Color.RED);
arc3.setCenterX(250.0f);
arc3.setCenterY(250.0f);
arc3.setRadiusX(size);
arc3.setRadiusY(size);
arc3.setStartAngle(30.0f+90.0f);
arc3.setLength(60.0f);
arc3.setType(ArcType.ROUND);
Arc arc4 = new Arc();
arc4.setFill(Color.RED);
arc4.setCenterX(250.0f);
arc4.setCenterY(250.0f);
arc4.setRadiusX(size);
arc4.setRadiusY(size);
arc4.setStartAngle(30.0f+180.0f);
arc4.setLength(60.0f);
arc4.setType(ArcType.ROUND);
pane.getChildren().addAll(circle,circle2,arc1,arc2,arc3,arc4);
return pane;
}
}