实验二 运用JavaFx实现时钟动画.docx
- 文档编号:3271748
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:9
- 大小:294.46KB
实验二 运用JavaFx实现时钟动画.docx
《实验二 运用JavaFx实现时钟动画.docx》由会员分享,可在线阅读,更多相关《实验二 运用JavaFx实现时钟动画.docx(9页珍藏版)》请在冰豆网上搜索。
实验二实验二运用运用JavaFx实现时钟动画实现时钟动画中南大学Java实验报告学生姓名学生学号题目实验二运用JavaFx实现时钟动画专业班级完成时间2014年12月16日目录1.问题描述3一、实验目的3二、实验开发环境和工具3三、实验内容32.设计简要描述33.程序清单34.结果分析35.调试报告3实验二运用JavaFx实现时钟动画1.问题描述问题描述一、实验目的一、实验目的1了解和掌握JavaFx动画基本概念和相关用法二、实验开发环境和工具二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,可使用集成开发环境Eclipse,使用Java语言,工具包使用JDK1.8。
三、实验内容三、实验内容基于JavaFx画出如下所示可动态变化的时钟。
要求按start按钮可启动时钟,按stop按钮可让时钟暂停。
时钟初始时显示当前时间并开始动态变化。
2.设计简要描述设计简要描述1.classclockextendsPane用clock类继承Pane类,内有clock和paint两个函数,这是用来画时钟的,并且定义了变量Lineline_second,line_minute,line_hour(秒针,分针,时针)、以及c_second,c_minute,c_hour(秒、分、时分别指向的时间)。
比起实验一,还增加了按钮Start和Stop的功能,相应的也添加了两个功能函数。
另,增加了隔一秒就变化一次的动画,使时钟能够动起来。
2.publicvoidstart此函数用来建立界面,加上了标题SmartClock。
3.publicstaticvoidmain主函数。
4.程序清单程序清单package时钟;importjava.util.*;importjavafx.animation.KeyFrame;importjavafx.animation.Timeline;importjavafx.application.Application;importjavafx.event.ActionEvent;importjavafx.event.EventHandler;importjavafx.scene.Scene;importjavafx.scene.control.Button;importjavafx.scene.layout.HBox;importjavafx.scene.layout.Pane;importjavafx.scene.paint.Color;importjavafx.scene.shape.Circle;importjavafx.scene.shape.Line;importjavafx.scene.text.Text;importjavafx.stage.Stage;importjavafx.util.Duration;publicclassSmartClockextendsApplicationclassclockextendsPaneprivateTimelinetimeline;privateButtonStart,Stop;privateLineline_second,line_minute,line_hour;privatedoublec_second,c_minute,c_hour;publicclock()HBoxhbox=newHBox();hbox.setSpacing(20);hbox.setLayoutX(310);hbox.setLayoutY(520);Start=newButton(Start);Start.setPrefSize(80,40);Stop=newButton(Stop);Stop.setPrefSize(80,40);hbox.getChildren().addAll(Start,Stop);getChildren().add(hbox);Start.setOnAction(newEventHandler()publicvoidhandle(ActionEvente)System.out.println(Startbuttonclicked);timeline.play(););Stop.setOnAction(newEventHandler()publicvoidhandle(ActionEvente)System.out.println(Stopbuttonclicked);timeline.stop(););Circlecircle=newCircle(400,300,200,Color.web(white,0);circle.setStroke(Color.web(black,1);getChildren().add(circle);for(inti=0;i60;i+)Lineline=newLine(400+200*Math.sin(Math.PI*i/30),(300-200*Math.cos(Math.PI*i/30),400+190*Math.sin(Math.PI*i/30),(300-190*Math.cos(Math.PI*i/30);getChildren().add(line);for(inti=0,j=0;i60;i=i+5,j+)Stringn=12,1,2,3,4,5,6,7,8,9,10,11;Lineline=newLine(400+200*Math.sin(Math.PI*i/30),(300-200*Math.cos(Math.PI*i/30),400+180*Math.sin(Math.PI*i/30),(300-180*Math.cos(Math.PI*i/30);getChildren().add(line);Texttext=newText(395+170*Math.sin(Math.PI*i/30),(300-170*Math.cos(Math.PI*i/30),nj);getChildren().add(text);line_second=newLine();line_minute=newLine();line_hour=newLine();paint();getChildren().addAll(line_second,line_minute,line_hour);timeline=newTimeline();timeline.setCycleCount(Timeline.INDEFINITE);Durationduration=Duration.millis(1000);KeyFramekeyFrame=newKeyFrame(duration,newEventHandler()publicvoidhandle(ActionEventevent)paint(););timeline.getKeyFrames().add(keyFrame);timeline.play();publicvoidpaint()Calendarc=Calendar.getInstance();/取当前时间c_second=c.get(Calendar.SECOND);c_minute=c.get(Calendar.MINUTE);c_hour=c.get(Calendar.HOUR)*5;line_second.setStartX(400);line_second.setStartY(300);line_second.setEndX(400+160*Math.sin(Math.PI*c_second/30);line_second.setEndY(300-160*Math.cos(Math.PI*c_second/30);line_second.setStroke(Color.RED);line_minute.setStartX(400);line_minute.setStartY(300);line_minute.setEndX(400+120*Math.sin(Math.PI*c_minute/30);line_minute.setEndY(300-120*Math.cos(Math.PI*c_minute/30);line_minute.setStroke(Color.BLUE);line_hour.setStartX(400);line_hour.setStartY(300);line_hour.setEndX(400+80*Math.sin(Math.PI*c_hour/30);line_hour.setEndY(300-80*Math.cos(Math.PI*c_hour/30);line_hour.setStroke(Color.GREEN);publicvoidstart(Stagestage)clockpane=newclock();Scenescene=newScene(pane,800,600);stage.setTitle(SmartClock);stage.setScene(scene);stage.show();publicstaticvoidmain(Stringargs)launch(args);4.结果分析结果分析如图,这是和系统时间一致的虚拟时钟,有时、分、秒的显示。
如图,暂停后的效果。
点击开始后,又开始运行动画效果。
5.调试报告调试报告对于模拟时钟的设计,基本上实现了模拟时钟程序的要求,在中央有一个白色背景的模拟时钟。
设计的特点是时钟上标有12个小时的刻度,每个小时刻度之间还有4个小格用来显示分和秒,时针、分针、秒针是不同的颜色,看上去比较美观。
在上机实习完成课程设计的过程中,遇到了不少的问题,一是有一些东西接触得不深,平时的练习不够,到了实践环节就有些手忙脚乱;二是在编写的过程中由于思路不清晰以及自己的粗心给自己制造了一些麻烦,还有就是会产生一些异常。
但是在经过自己和老师、同学的交流,以及自己查阅资料和API文档,针对性的对不懂得问题进行查询,自己没有学过但是又要用到得逐渐的得到解决,再经过自己反复的理清思路和反复的检查由思路不清晰和粗心带来的麻烦也慢慢得到了解决。
比起实验一,实验二多了一个动画效果,我是直接在实验一的基础上添加的,遇到的问题较少。
我有以下几点感想:
首先,java作为一种计算机语言,它具备语言的特性,就是我们在课堂上认真听取了老师的指导之后,还得自己回去认真看书写程序,并且上机实习才能发现问题及时解决问题。
就像我们学习语言一样要通过和同学之间的交流才能提高我们的实际应用能力。
所以,我们在自己认真刻苦学习的同时,一定要多和同学老师交流,从他们那里吸取好的思维方式、好的学习方法。
在上机实习的时候,我现在回顾自己一学期的学习,觉得首先应该熟悉java的概念,明白程序开发的基本思想,熟悉开发环境之后马上进行自主学习,自己学习的步伐千万不能落于老师讲课授课的速度。
如果这样的话,我们很可能处于一种被动学习的劣势,失去对java学习的热情,以至于恶性循环,到最终的无可救药。
在平时的训练和刚刚结束的上机实习中我深刻的体会到了学习好java我们就要一定要掌握好java的基本语句,包括条件语句和循环语句。
这些就是我们编写程序这棵大树的必要组成枝叶。
建立起关键语句的之后,我们才能有更强的功能和实用性。
Java作为一个面向对象的编程语言,在图像方面具有很强的实现能力。
这样很能激发我们的学习兴趣。
在编写程序的时候发现,虽然它是一个面向对象的编程语言,我们一定要学会如何编写多个类和方法,在不断地摸索中培养我们自身设计面向对象解决方案的能力。
作为学生的我们,是一个学习的过程,我们应该学习如何写好程序。
而好的程序不仅仅是一系列语句的拼凑,我们要联系自身实际,用编程语言解决问题和实施解决问题的方案。
在学习java的这一段时间当中,图形激发了我学习的巨大热情。
所以,我觉得我自己一定要在打好坚实的基础的情况下,对图形学进行认真学习。
在学习图形和图形用户接口的时候,觉得变得吃力起来。
因为随着课程的加重,发现自己动手能力越来越若,在事件处理和图形用户接口的使用中,出现了知识点模棱两可的情况。
当然,任何的困难挫折在不断地努力中都会变得脆弱,只是暂时的阴影。
在以后的日子里,我要不断地学习这个博大精深的语言,继续不断的深化自己的实际动手能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 运用JavaFx实现时钟动画 实验 运用 JavaFx 实现 时钟 动画
![提示](https://static.bdocx.com/images/bang_tan.gif)