_java模拟时钟课设
2.设计方案论证
2.1 运行环境:JCreator +JDK 平台 CPU:Pentium 2.8GHz 以上 内存:256MB 以上 硬盘空间:80G 以上 操作系统:Windows XP 2.2 设计思路及功能描述 Java 是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立 的,可移植的,性能很优异的,多线程的,动态的语言。Java 去掉了 C++语言的许多功 能,让 Java 的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将 减少平常出错的 50%。而且,Java 很小,整个解释器只需 215K 的 RAM。 因此运用 Java 程序编写模拟时钟程序,实现简单显示时间的功能。本次课程设计 做的是 Java 简单模拟时钟,它是图形界面、线程、流与文件等技术的综合应用,其界 面主要采用了 java.awt 包,javax.swing 包等。 程序实现了模拟时钟的基本功能。 我设计的时钟有的界面良好,比较简洁美观,程序有很强的实用性,实现程序与电 脑的时间的同步。可以显示时钟,也可以显示分针秒针,并可以在相应位置调整时间。 而且初始运行会自动与电脑的时间校对,一般默认为同步,但还可以自己再次调节,提
表 1-成员变量表
Clock 成员变量 成员变量描述 变量类型 名称
时针
String
Hour
分针
String
Minute
秒针
String
Second
时间点
TextFieldFra bibliotektext_1
沈 阳 大 学
课程设计说明书
表 2-方法表
NO.3
Clock 方法 方法名 setCurrentTime 时间 paintHourPointer paintSecondPointer paintMinuteDot actionPerformed run 设置时针 设置秒针 设置分针 事件处理 程序运行 接口方法 接口方法 接口方法 功能 设置当前 备注 构造方法
NO.5
沈 阳 大 学
课程设计说明书
NO.6
用 Java 实现动画的原理与放映动画片类似, 就是取若干个相关的图像或图片, 顺序、 连续地在屏幕上先显示、后擦除,循环往复就可以获得动画的效果。 在动画设计中,一般会用到 paing( )、repaint( )、和 update( )方法。在动画设计中, 有时会存在抖动问题,但一般来说,浏览器能很好地解决显示和刷新问题。在图形设计 中,若重写 paint( )方法可以自动绘制所希望的图形,在需要更新图形时可调用 repaint( ) 方法,而不需要重写 repaint( )方法。至于 update( )方法,一般情况下既不需要重写,也 不需要调用。只是在动画设计中,如果仅重写 paint( )方法,会产生抖动现象,为消除抖 动现象,需要重写 update( )方法。 在主页中经常会看到卡通似的动画效果,制作这种动画的原理也是很简单的,就是 通过快速地放映许多张图片,利用人眼的视觉暂留特性来达到动画的效果。动画的质量 除了取决于图片的好坏之外,动画中动画的平滑速度,也是非常关键的。 2.4 程序说明 先是利用构造函数创建一个长为 500,宽为 200 的窗体,颜色设置为 black,并把窗 体设计为固定大小,并且创建一个监听事件进行监听。随即创建一个时间计数器,最后 实现 ActionListener 接口的实现方法。利用 2D 绘制图形的方法,在窗体左方画一个圆, 并且绘制时钟上的 12 个汉字, 然后利用 Calendar 类提供的 HOUR, MINUTE, SECOND 和 MILLISECOND 方法获得现在的时间,在计算时间和度数的关系;在利用 2D 绘制图 形的方法绘制出各指针,并设置不同的颜色。在利用 drawString 在窗体的右上方画出一 个小的框并在里面现在和时钟相对数字时间;然后根据相同的方法在数字时间下面显示 秒表功能。在设计的过程中,需要用到 Swing 组件和 Swing 容器与组件,布局管理器, 事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。“SimpleDateFormat formatter” 用 于 格 式 化 时 间 显 示 ,“String lastdate” 用 于 保 存 当 前 时 间 的 字 符 串 ,“Font clockFaceFont”用于设置显示时钟里面的数字的字体; “Date currentDate”用于显示当前时 间;“Color handColor”用于显示时针、分针和表盘的颜色;“Color numberColor” 用于显 示秒针和数字的颜色,“public void init()”用于设计时钟格式并捕捉异常;“public void plotpoints(int x0, int y0, int x, int y, Graphics g)” 用于计算四分之一的圆弧;“public void circle(int x0, int y0, int r, Graphics g”) 用 Bresenham 算法来画圆, 其中(x0,y0)是圆的中心, r 为圆半径;“public void paint(Graphics g)”用于运行时钟程序; “public void start()”
沈 阳 大 学
课程设计说明书
int y1 = (int) ((r - 10) * Math.cos(rad * s)) g.drawLine(x + r, y + r, x + r + x1, y + r - y1) // 分针 g.setColor(Color.BLUE) x1 = (int) ((r - r / 2.5) * Math.sin(rad * m)) y1 = (int) ((r - r / 2.5) * Math.cos(rad * m)) g.drawLine(x + r, y + r, x + r + x1, y + r - y1) // 时针 g.setColor(Color.CYAN) x1 = (int) ((r - r / 1.5) * Math.sin(rad * h)) y1 = (int) ((r - r / 1.5) * Math.cos(rad * h)) g.drawLine(x + r, y + r, x + r + x1, y + r - y1) // 数字 g.setColor(Color.YELLOW) int d = 29 for (int i = 1; i <= 12; i++) x1 = (int) ((r - 10) * Math.sin(rad * d)) y1 = (int) ((r - 10) * Math.cos(rad * d)) g.drawString(i + "", x + r + x1 - 4, x + r - y1 + 5) d += 30 // 小点 d = 0; for (int i = 0; i < 60; i++) x1 = (int) ((r - 2) * Math.sin(rad * d)) y1 = (int) ((r - 2) * Math.cos(rad * d)) g.drawString(".", x + r + x1 - 1, x + r - y1 + 1) d += 6 // 显示时间 //Calendar now1 = new GregorianCalendar(); //g.drawString(now1.get(Calendar.HOUR_OF_DAY) + ":" //+ now1.get(Calendar.MINUTE) + ":" + now1.get(Calendar.SECOND), //0, 10); 主要成员方法: public void run 捕获异常 catch (Exception ex) 完成显示实时数据 s += 6 if (s >= 360) s=0 m += 6 if (m == 72 || m == 144 || m == 216 || m == 288) h += 6 if (m >= 360) m=0 h += 6; if (h >= 360) h = 0; this.repaint();
沈 阳 大 学
课程设计说明书
高了实用性。
NO.2
本系统共包括 1 个 java 源文件。Clock 源文件是本程序的主函数其作用是初始化棋 盘 。 setCurrentTime 源 文 件 实 现 电 脑 设 置 时 间 。 paintHourPointer 源 文 件 为 时 针 . paintSecondPointer 源文件实现人与电脑设置秒针. paintMinuteDot 源文件人与电脑设置 分针。 2.3 方案论证 2.3.1 详细设计 类名: Clock 作用: 自定义主类,对鼠标拖拽的初始界面进行声明 继承的父类: JComponent 类 实现的接口: 没有
课程设计说明书
JAVA 模拟时钟课设 1.课程设计的目的
NO.1
Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。 面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而 且有利于软件的维护和继承。 为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象 的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了 一周的Java程序设计课程设计。 通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握 JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通 过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程 思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。