当前位置: 首页 > news >正文

Java语言程序设计基础篇_编程练习题**15.28(显示一个转动的风扇)

**15.28(显示一个转动的风扇)

编写一个程序显示一个转动的风扇,如图15-33c所示。Pause、Resume和Reverse按钮用于暂停、继续和反转风扇的转动

可修改编程练习题14_9的代码

  • 习题思路:
  1. 新建一个BorderPane,一个Pane和一个HBox,Pane用来装风扇,HBox用于装按钮
  2. 在Pane面板中新建一个大圆Cirlce,再用for循环绘制四个扇形Arc, 把arc的类型设为ROUND,开始角度每次循环增加90
  3. 创建一个RotateTransition对象,旋转的节点设为pane
  4. 把Pane设置在BorderPane的中心
  5. 创建三个按钮并添加到HBox中,每个按钮都有对应的注册方法(为实现风扇反转功能,可以把动画的速率乘以-1)
  6. 把HBox设置在BorderPane的底部

示例代码: 编程练习题15_28RotatingFan.java

package chapter_15;import javafx.animation.RotateTransition;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
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 编程练习题15_28RotatingFan extends Application{@Overridepublic void start(Stage primaryStage) throws Exception {Pane pane = new Pane();BorderPane borderPane = new BorderPane(pane);Scene scene = new Scene(borderPane, 400, 420);borderPane.setMinWidth(400);borderPane.setMinHeight(420);pane.setPadding(new Insets(15, 15, 15, 15));pane.setMaxWidth(400);pane.setMinWidth(400);pane.setMaxHeight(400);pane.setMinHeight(400);double x = 200;double y = 200;Circle c = new Circle(x, y, 80);c.setStroke(Color.BLACK);c.setFill(Color.WHITE);pane.getChildren().add(c);int angle = 30;for(int i = 0;i < 4;i++) {Arc arc1 = new Arc(x, y, 70, 70, angle, 30);angle += 90;arc1.setFill(Color.BLUE);arc1.setType(ArcType.ROUND);pane.getChildren().add(arc1);}RotateTransition rt = new RotateTransition(Duration.millis(3000),pane);rt.setByAngle(360);rt.setCycleCount(Timeline.INDEFINITE);rt.play();borderPane.setCenter(pane);HBox hBox = new HBox();hBox.setAlignment(Pos.CENTER);hBox.setSpacing(5);Button btPause = new Button("Pause");Button btResume = new Button("Resume");Button btReverse = new Button("Reverse");hBox.getChildren().addAll(btPause, btResume, btReverse);btPause.setOnMouseClicked(e -> rt.pause());btResume.setOnMouseClicked(e -> rt.play());btReverse.setOnMouseClicked(e -> rt.setRate(rt.getRate() * -1));// 通过将动画的速率乘以-1,可以实现反转动画的效果。borderPane.setBottom(hBox);primaryStage.setTitle("编程练习题15_28RotatingFan");primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {Application.launch(args);}
}
  •  结果展示

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Linux】进程IO|重定向|缓冲区|dup2|dup|用户级缓冲区|模拟缓冲区
  • leetcode 69. x 的平方根
  • C++里memset的使用
  • Oracle 文件管理-参数文件、控制文件、归档
  • Java语言程序设计——篇九(3)
  • AspectJWeaver反序列化
  • 数据结构经典测试题4
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 二叉树的广度搜索(200分) - 三语言AC题解(Python/Java/Cpp)
  • RabbitMq手动ack的超简单案例+Confirm和Return机制的配置和使用
  • 测试面试宝典(三十三)—— 接口测试有没有测试出什么问题?
  • 二分类、多分类、多标签分类的评价指标
  • 家具购物小程序的设计
  • (源码分析)springsecurity认证授权
  • 简单三步,帮你的照片重现高清,一键拯救摄影废片!
  • STM32——GPIO(点亮LEDLED闪烁)
  • [deviceone开发]-do_Webview的基本示例
  • 230. Kth Smallest Element in a BST
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • jquery cookie
  • overflow: hidden IE7无效
  • python大佬养成计划----difflib模块
  • rabbitmq延迟消息示例
  • 阿里云购买磁盘后挂载
  • 测试开发系类之接口自动化测试
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端相关框架总和
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 提醒我喝水chrome插件开发指南
  • 移动端 h5开发相关内容总结(三)
  • Semaphore
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (19)夹钳(用于送货)
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (七)Flink Watermark
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)视频码率,帧率和分辨率的联系与区别
  • **python多态
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .Family_物联网
  • .NET BackgroundWorker
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net操作Excel出错解决
  • .net中生成excel后调整宽度
  • @AutoConfigurationPackage的使用
  • [.NET]桃源网络硬盘 v7.4
  • [4.9福建四校联考]
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [C#]扩展方法
  • [C++] 多线程编程-thread::yield()-sleep_for()