javaFX简单实践(八)——旋转风车

编写一个程序,在面板显示显示一个风车,并实现旋转的效果。

 

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;
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值