JAVA实验报告
实验二 运用JavaFx实现时钟动画
班 级: 计算机科学与技术1306
学 号: **********
* ** * * *
**** * * *
2014 年 12 月 1 日
一 概述
1.课程设计的目的
设计一个带有指针、数字时钟,并且具有秒表功能,能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。了解和掌握JavaFx基本概念和用法。
把自己所学的理论知识运用到实际操作中去,以此来发现自己的不足,及时的改正。在实际的操作中学习及运用还没有学过的知识。最后在调试与测试的过程还可以提升自己的改错能力也是自己经验的积累。
java课程具有比较强的实践性。上机实验是一个重要的教学环节。一般情况下学生能够重视实验环节,对于编写程序上机练习具有一定的积极性。但是容易忽略实验的总结,忽略实验报告的撰写。对于一名大学生必须严格训练分析总结能力、书面表达能力。需要逐步培养书写科学实验报告以及科技论文的能力。拿到一个题目,一般不要急于编程。正确的方法是:首先理解问题,明确给定的条件和要求解决的问题,然后按照自顶向下,逐步求精,分而治之的策略,按照面向对象的程序设计思路,逐一地解决子问题。
2.课程设计的要求
基于JavaFx画出如下所示可动态变化的时钟。要求按‘start’按钮可启动时钟,按‘stop’按钮可让时钟暂停。时钟初始时显示当前时间并开始动态变化。
在设计的过程中,需要用到awt组件和Swing容器与组件,布局管理器,事件处理,绘制图形,还运用到了类的继承,事件和线程。还有自己还没有掌握的2D绘制图形,以及绘制各指针及之间的关系。为了完成自己的设计,必须API、教材以及相关的资料来解决这些尚未掌握的问题。
在实验一的图形基础上,再设置两个按钮,分别为“Start”和“Stop”按钮,控制时钟的运动和暂停,再通过事件函数来监听事件从而改变事件。时钟动画用Timeline类来实现,用KeyFrame类来执行指针变化的函数。
老师的要求就是尽量实现设计的功能,尽可能的锻炼自己的动手能力,提高自己的基础知识。
3.课程设计的主要设计思想
先是利用构造函数创建一个长为500,宽为200的窗体,颜设置为black,并把窗体设计为固定大小,并且创建一个监听事件进行监听。随即创建一个时间计数器,最后实现ActionListener接口的实现方法。利用2D绘制图形的方法,在窗体左方画一个圆,并且绘制时钟上的12个数字刻度,然后利用Calendar类提供的HOUR,MINUTE,SECOND和MILLISECOND方法获得现在的时间,在计算时间和度数的关系;在利用2D绘制图形的方法绘制出各指针,并设置不同的颜。在利用drawString在窗体的右上方画出一个小的框并在里面现在和时钟相对数字时间;然后根据相同的方法在数字时间下面显示秒表功能。
二 总体方案设计
1、编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面。
2、右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致。
3、在数字时间下方的矩形框作为秒表
4、用菜单选项或按钮设置时间和秒表,时间不必与机器系统时间相同,只要可任意设置即
可
整体框图
继续显示
三 详细设计
1、先是利用构造函数创建一个窗体,颜设置为初始态,并把窗体设计为固定大小,并且创建一个监听事件进行监听。随即创建一个时间计数器,最后实现ActionListener接口的实现方法。
2、利用2D绘制图形的方法,在窗体左方画一个圆,并且绘制时钟上的12个小时刻度和60个分钟刻度。
3、然后利用Calendar类提供的HOUR,MINUTE,SECOND和MILLISECOND方法获得现在的时间,在计算时间和度数的关系;在利用2D绘制图形的方法绘制出各指针,并设置不同的颜。
4、在编写主函数,在运行程序
所完成的具体功能及用到的算法(详细分析)。
程序流程图
主要部分的详细流程图
四 程序的调试与运行结果说明
调试的方法:首先我是一个类一个类的完成,在每一个类完成后都会对它进行编译,待它能正常的编译之后在进行下面的类的编写。在编译的过程中会有一些错误,比如说语法错误,类的引用格式不正确,会产生一些异常。但是在经过慢慢的调试,这些问题逐渐得到
解决。
功能:显示实时时间并且可以用开始和暂停控制。
运行结果:
开始运行时,为当前时间
运行后,点击暂停,停止转动
重新点击开始,继续运行
五 课程设计总结
对于课程设计,基本上实现了模拟时钟程序的要求。
该设计时钟上标有12个小时刻度,60个分钟刻度。并且各指针是不同的颜,看上去比较美观。
设有开始、暂停的按钮,按‘start’按钮可启动时钟,按‘stop’按钮可让时钟暂停。时钟初始时显示当前时间并开始动态变化。
我想在不断地进行对该设计的完善,不仅能为该时钟设置背景,以增加该时钟的美观效果,也可以对时钟到了一定的时间就可以报时,并且可以设置闹钟,为闹钟设置多种音乐,可供选择,这样的话就不显得单调,这样一来该时钟更方便实用。
困难及解决途径
在上机实习完成课程设计的过程中,遇到了不少的问题,一是有一些东西自己没有学过,而是在编写的过程中由于思路不清晰以及自己的粗心给自己制造了一些麻烦,还有就是会产生一些异常。但是在经过自己和老师、同学的交流,以及自己查阅资料和API文档,针对性的对不懂得问题进行查询,自己没有学过但是又要用到得逐渐的得到解决,再经过自己反复的理清思路和反复的检查由思路不清晰和粗心带来的麻烦也慢慢得到了解决。
六 后记
首先,java作为一种计算机语言,它具备语言的特性,就是我们在课堂上认真听取了老师
的指导之后,还得自己回去认真看书写程序,并且上机实习才能发现问题及时解决问题。就像我们学习语言一样要通过和同学之间的交流才能提高我们的实际应用能力。所以,我们在自己认真刻苦学习的同时,一定要多和同学老师交流,从他们那里吸取好的思维方式、好的学习方法。
在上机实习的时候,我现在回顾自己一学期的学习,觉得首先应该熟悉java的概念,明白程序开发的基本思想,熟悉开发环境之后马上进行自主学习,自己学习的步伐千万不能落于老师讲课授课的速度。如果这样的话,我们很可能处于一种被动学习的劣势,失去对java学习的热情,以至于恶性循环,到最终的无可救药。
在平时的训练和刚刚结束的上机实习中我深刻的体会到了学习好java我们就要一定要掌握好java的基本语句,包括条件语句和循环语句。这些就是我们编写程序这棵大树的必要组成枝叶。建立起关键语句的之后,我们才能有更强的功能和实用性。
Java作为一个面向对象的编程语言,在图像方面具有很强的实现能力。这样很能激发我们的学习兴趣。在编写程序的时候发现,虽然它是一个面向对象的编程语言,我们一定要学会如何编写多个类和方法,在不断地摸索中培养我们自身设计面向对象解决方案的能力。
作为学生的我们,是一个学习的过程,我们应该学习如何写好程序。而好的程序不仅仅是一系列语句的拼凑,我们要联系自身实际,用编程语言解决问题和实施解决问题的方案。在学习java的这一段时间当中,图形激发了我学习的巨大热情。所以,我觉得我自己一定要在打好坚实的基础的情况下,对图形学进行认真学习。在学习图形和图形用户接口的时候,觉得变得吃力起来。因为随着课程的加重,发现自己动手能力越来越若,在事件处理和图形用户接口的使用中,出现了知识点模棱两可的情况。当然,任何的困难挫折在不断地努力中都会变得脆弱,只是暂时的阴影。最后我想说不会写java程序不要紧,多在网上资料和文章学习,多看看程序员的博客、与导师沟通学习,总会到你需要的材料,书山有路勤为径,学海无涯苦作舟。
在以后的日子里,我要不断地学习这个博大精深的语言,继续不断的深化自己的实际动手能力。
七 附录
package clock2;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;javaswing和javafx
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
import *;
import java.util.*;
class Clock extends Canvas
implements ActionListener{
static JButton jb=new JButton("start");
static JButton jb1=new JButton("stop");
Date date;
Timer secondTime;
int hour,munite,second;
Line2D secondLine,muniteLine,hourLine;
int a,b,c;
double pointSX[]=new double[60],//用来表示秒针端点坐标的数组
pointSY[]=new double[60],
pointMX[]=new double[60], //用来表示分针端点坐标的数组
pointMY[]=new double[60],
pointHX[]=new double[60], //用来表示时针端点坐标的数组
pointHY[]=new double[60];
Clock()
{ secondTime=new Timer(1000,this);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论