




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于java实现电子时钟 基于java实现电子时钟摘要Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。同时,用java做一些小程序也非常方便。比如,我做的电子时钟。我用的java编程工具是myEclipse,因为它的可视化功能比较强大。在实现电子时钟功能前,我将程序分为3个部分:界面布局、线程控制、时分秒针的绘制。其中线程控制、时分秒针的绘制为程序的主体部分。线程控制,利用实现RUNNABLE接口中的run方法来控制时钟的转动;时分秒针的绘制,利用Dimension类,使用其中的一些方法绘制出时分秒针以及表盘。最后,这个程序的关键就在于设置好线程的延时以及把握时、分、秒之间的换算关系。关键词:线程控制;RUNNABLE接口;Dimension类BASE ON JAVA ACHIEVE ELECTRONIC CLOCKABSTRACTJava is a object oriented program design language what can compose cross platform application software. At the same time, it is also very convenient that make some small programs. For example, my electronic clock program;The programming tool I used is MyEclipse ,because its visual function is very powerful. Before achieve electronic clock program, I divide the program into 3 parts: the interface layout, thread control, drawing the hour, minute and second hand. Among them, thread control and drawing the hour, minute and second hand is the main body of the program. Thread control, through the realization of the run function of RUNNABLE interface to control the rotation of the clock; Drawing the hour, minute and second hand, use Dimension class, using some methods of it to draw the hour, minute and second hand and clock dial.Finally, the key of procedure is set the thread delay and the conversion between hour ,minute and second . Key words: thread control; RUNNABLE interface; Dimension class目 录1 课程目的与要求11、1课程目标11、2 课程的实现环境12 概要设计23 详细设计34 测试结果与心得体会5 参考文献附录源程序代码3 1 课程的目的与要求1、1课程目标JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。实现可视化的时钟,并且能与现实的时钟的时间对应。1、2课程的实现环境硬件要求能运行Windows9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。利用java的一些类和接口,详细可在详细设计中见到。2概要设计2、1自定义类说明类名:ClockDemo;作用:自定义主类,对鼠标操作的界面进行声明;继承的父类:JFrame; 实现的接口:Runnable;表2、1、1clock成员变量成员变量描述变量类型名称时针Int小时数分针Int分数秒针Int秒数表2、1、2clock方法方法名功能备注Start启动线程接口方法Run运行进程接口方法Paint重载组件3详细设计import java.awt.*;import java.text.DateFormat;import java.util.*;import javax.swing.*;/数字时钟public class ClockDemo extends JFrame implements Runnable Thread clock; final int Xpoint=180; final int Ypoint=180; final int R=80; int xHour=0,yHour=0,xSecond=0,ySecond=0,xMin=0,yMin=0; public ClockDemo() super(数字时钟); /调用父类构造函数 setFont(new Font(宋体,Font.BOLD,20); /设置时钟的显示字体 start(); /开始进程 setSize(360,360); /设置窗口尺寸 setVisible(true); /窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /关闭窗口时退出程序 public void start() /开始进程 if(clock=null)/如果进程为空值 clock=new Thread(this); /实例化进程 clock.start(); /开始进程 public void run()/运行进程 while (clock!=null) repaint(); /调用paint方法重绘界面 try Thread.sleep(1000); /线程暂停一秒(1000毫秒) catch (InterruptedException ex) ex.printStackTrace(); /输出出错信息 public void stop()/停止进程 clock=null;public void paint(Graphics g)/重载组件的paint方法 Graphics2D g2=(Graphics2D)g; /得到Graphics2D对象 DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); Calendar now=new GregorianCalendar(); /实例化日历对象 now.setTime(new Date();/dateFormat.format(now.getTime() String timeInfo=; /输出信息 int hour=now.get(Calendar.HOUR_OF_DAY); /得到小时数 int minute=now.get(Calendar.MINUTE); /得到分数 int second=now.get(Calendar.SECOND); /得到秒数 if (hour=9) timeInfo+=0+hour+:; /格式化输出 else timeInfo+=hour+:; if (minute=9) timeInfo+=0+minute+:; else timeInfo+=minute+:; if (second=9) timeInfo+=0+second; else timeInfo+=second; g.setColor(Color.yellow); /设置当前颜色为白色 Dimension dim=getSize(); /得到窗口尺寸 g.fillRect(0,0,dim.width,dim.height); /填充背景色为白色 g.setColor(Color.red); /设置当前颜色为橙色 g.drawString(timeInfo,130,340); /显示时间字符串 g.setColor(Color.green); g.drawString(dateFormat.format(now.getTime(),20,60); g.setColor(Color.black); g.setFont(new Font(SAN_SERIF,Font.BOLD,15); for(int i=0,num=12;i360;i+=6) double alfa = Math.toRadians(i); int xPos=Xpoint+(int)(R*Math.sin(alfa); int yPos=Ypoint-(int)(R*Math.cos(alfa); if(i=0) if (num%3=0) g.setColor(Color.red); / 数字3,6,9,12为红色 else g.setColor(Color.black); / 其余数字为黑色 g.drawString(+num,xPos-5,yPos+3); / 写数字 num=(num+1); else g.setColor(Color.black); g.drawString(.,xPos,yPos); g.setColor(Color.black); g.fillOval(Xpoint-4,Ypoint-4,8,8); /画秒针 xSecond=(int)(Xpoint+(R-10)*Math.sin(second*(2*Math.PI/60); ySecond=(int)(Ypoint-(R-10)*Math.cos(second*(2*Math.PI/60); g.setColor(Color.red); g.drawLine(Xpoint,Ypoint,xSecond,ySecond); /画分针 xMin=(int)(Xpoint+(R-20)*Math.sin(minute+second/60)*(2*Math.PI/60); yMin=(int)(Ypoint-(R-20)*Math.cos(minute+second/60)*(2*Math.PI/60); g.setColor(Color.red); g.drawLine(Xpoint,Ypoint,xMin,yMin); /画时针 xHour=(int)(Xpoint+(R-30)*Math.sin(hour+minute/60+second/60/60)*(2*Math.PI/12); yHour=(int)(Ypoint-(R-30)*Math.cos(hour+minute/60+second/60/60)*(2*Math.PI/12); g.setColor(Color.red); g.drawLine(Xpoint,Ypoint,xHour,yHour);public static void main(String args) new ClockDemo();4测试结果与心得体会4、1程序运行情况当程序正常运行的时候,它能清晰的显示时钟界面。默认为与系统时间同步,如果出现错误,就会进行归零。运行界面如图4、1图4、14、2程序的异常处理当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。有时候,一种方法可能希望测试当前线程是否已被中断,如果已被中断,则立即抛出此异常。利用trycatch来捕获出现的异常。try Thread.sleep(1000); /线程暂停一秒(1000毫秒) catch (InterruptedException ex) ex.printStackTrace(); /输出出错信息 4、3心得体会本次Java课程设计我的题目是时钟,题目不算难,但我做的很艰苦。主要就是动手能力太差,理论知识掌握的不全面,自以为会不少,但真做起来,却不知道从哪下手了。又回去温习理论知识,请教老师,上网查资料,忙的不亦乐乎。不过经过努力总算是做出来了,还通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用。在设计的过程中我遇到的很多问题,在老师的帮助和自己的思考下还是很好的完成了。这此课程设计我懂得了写程序不能脱离实际,只凭主观办事,要努力拓宽知识面,拓展思维。事情就是如此,努力代表收获。通过这次课程设计,我才真正领悟到“艰苦奋斗”这一词的真正含义,我才感受到早期电子设计者为现代的社会付出。设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但现在可以,这些天的设计中得到的东西却不比理论课上得到的少多少,我感觉我和Java的距离更加近了;我想说,确实很累,但当我看到自己所做的成果时,心中也不免产生兴奋;学习有成果了么。对Java编程有了一个基本的了解。这些天温习的内容越多,敲得代码越多,自己的学习积极性也越在提高,感觉也越充实。越来越发现现在学习的只是Java的基础,但涉及的面还是很广泛的,这些都为以后进一步学习Java的高级特性打下了扎实的基础。随着课程难度的慢慢加强,今后遇到的困难也必将会越来越多,但我相信自己一定能做好这些的。在本次Java课程设计中,我要非常感谢我的指导老师丁老师,不但在课堂上教给了我很多的Java的编程知识,编程思想,而且在这次课程设计中更教会了我动手的能力,真正的编出了自己的东西,还要感谢我的同学,他们在我遇到困难时也给了我很多帮助。参考文献1 DavidFlanagan编.Java实例技术手册附录源程序代码:import java.awt.*;import java.text.DateFormat;import java.util.*;import javax.swing.*;/数字时钟public class ClockDemo extends JFrame implements Runnable Thread clock; final int Xpoint=180; final int Ypoint=180; final int R=80; int xHour=0,yHour=0,xSecond=0,ySecond=0,xMin=0,yMin=0; public ClockDemo() super(数字时钟); /调用父类构造函数 setFont(new Font(宋体,Font.BOLD,20); /设置时钟的显示字体 start(); /开始进程 setSize(360,360); /设置窗口尺寸 setVisible(true); /窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /关闭窗口时退出程序 public void start() /开始进程 if(clock=null)/如果进程为空值 clock=new Thread(this); /实例化进程 clock.start(); /开始进程 public void run()/运行进程 while (clock!=null) repaint(); /调用paint方法重绘界面 try Thread.sleep(1000); /线程暂停一秒(1000毫秒) catch (InterruptedException ex) ex.printStackTrace(); /输出出错信息 public void stop()/停止进程 clock=null;public void paint(Graphics g)/重载组件的paint方法 Graphics2D g2=(Graphics2D)g; /得到Graphics2D对象 DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); Calendar now=new GregorianCalendar(); /实例化日历对象 now.setTime(new Date();/dateFormat.format(now.getTime() String timeInfo=; /输出信息 int hour=now.get(Calendar.HOUR_OF_DAY); /得到小时数 int minute=now.get(Calendar.MINUTE); /得到分数 int second=now.get(Calendar.SECOND); /得到秒数 if (hour=9) timeInfo+=0+hour+:; /格式化输出 else timeInfo+=hour+:; if (minute=9) timeInfo+=0+minute+:; else timeInfo+=minute+:; if (second=9) timeInfo+=0+second; else timeInfo+=second; g.setColor(Color.yellow); /设置当前颜色为白色 Dimension dim=getSize(); /得到窗口尺寸 g.fillRect(0,0,dim.width,dim.height); /填充背景色为白色 g.setColor(Color.red); /设置当前颜色为橙色 g.drawString(timeInfo,130,340); /显示时间字符串 g.setColor(Color.green); g.drawString(dateFormat.format(now.getTime(),20,60); g.setColor(Color.black); g.setFont(new Font(SAN_SERIF,Font.BOLD,15); for(int i=0,num=12;i360;i+=6) double alfa = Math.toRadians(i); int xPos=Xpoint+(int)(R*Math.sin(alfa); int yPos=Ypoint-(int)(R*Math.cos(alfa); if(i=0) if (num%3=0) g.setColor(Color.red); / 数字3,6,9,12为红色 else g.setColor(Color.black); / 其余数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海底捞火锅服务创新与市场竞争分析报告
- 智研咨询发布:2025版云南省肥料行业发展历程、市场概况及未来前景研究报告
- 2025年教师招聘之《小学教师招聘》题库必刷100题及答案详解【名校卷】
- 砌体工程双优化方案(3篇)
- 洞察未来:2025年奢侈品消费市场消费趋势研究报告
- 洞察2025:跨境电商本土化售后服务案例研究报告
- 南岸河道整治工程方案(3篇)
- 抹灰工程-施工方案(3篇)
- 民生工程运行方案模板(3篇)
- 分布式能源系统中生物质能源的生物质能发电设备市场应用风险管理策略报告2025
- 初一开学第一课初一新同学我想对你说课件
- 《无线电失效程序》课件
- 2024年太原市小店区供热公司招聘笔试参考题库附带答案详解
- 汽车产品使用说明书
- 市政道路监理规划及市政道路监理大纲
- 集体协商工作指导手册
- 摩托车行驶安全知识
- 防震减灾科普
- 酒店工程节能降耗培训展示
- 多组学数据的整合与分析
- 2024年针灸学(正高)考试历年全考点试卷附带答案
评论
0/150
提交评论