JAVA课程设计 时钟

合集下载

Java时钟软件设计报告

Java时钟软件设计报告

佛山科学技术学院《可视化编程技术》课程设计报告时钟软件设计学生姓名:***学号:**********年级专业:11级教育技术学2班指导老师:***学院:教育科学学院广东★佛山提交日期:2013年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 计算器功能 (3)2.3 界面设计 (3)2.4 类的框架结构图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 处理按了运算符后的计算 (5)3.2.2 处理输入字符 (6)3.2.3 进制的转换 (6)3.2.4 设计总体认识 (7)3.2.5 程序流程图 (8)4. 运行结果 (8)5. 测试分析 (9)5.1 程序运行情况 (9)5.2 程序异常处理 (9)6. 源程序 (9)参考文献 (27)设计总结 (27)摘要:本程序在框架中新建一个容器,用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间;用一个永真循环,来对当前时间显示的更新,用java.io.File来实现对文件读写,设计了一个按钮,用来选择文件WAU或MID,用java.applet.Applet 播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距.关键字:java时钟,时钟类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的时钟,可以清楚地知道时间和设定一个时间来提醒自己,满足日常基本的工作学习和生活需要。

Java是由Sun公司开发的新一代纯面向对象的网络编程语言。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

JAVA课程设计 闹钟的设计与实现项目报告 附源代码

JAVA课程设计 闹钟的设计与实现项目报告 附源代码

Java 设计报告书课程名称:JAVA语言程序设计设计题目:闹钟的设计与实现院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:许研2010 年12 月28 日目录一、题目描述 (1)二、设计思路 (1)三、运行结果 (5)四、源代码 (6)五、总结 (10)六、参考文献 (10)闹钟的设计与实现一、题目描述:结合JAVA图形界面的知识设计一个闹钟二、设计思路1、设计要求:编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。

2、算法基本描述:本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。

3、设计思想与内容1、画出类的UML简图Clock类:Clock类中的变量ri, shi, fen, miao, dangqian, guanji: JLabe lqueding, dakai: JButtonmusic, RI, SHI, FEN, MIAO: JTextFieldh = 0, f = 0, m = 0, r = 0 :intFo, foo: booleansoumd1: public AudioClipClock类中的函数public clock()public static void main(String agrs[])public void run()2、各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐3、主要模块算法描述(1)当前动态时间的显示的设计与实现。

java钟表课程设计

java钟表课程设计

java钟表课程设计一、课程目标知识目标:1. 学生能理解并掌握Java语言中面向对象编程的基本概念,如类、对象、属性、方法等;2. 学生能够运用Java语言编写一个简单的钟表程序,实现时间显示、时间更新等功能;3. 学生了解并掌握Java中事件处理机制,实现钟表界面的交互功能。

技能目标:1. 学生能够运用所学知识,独立完成一个具有基本功能的钟表程序设计;2. 学生通过实际编程操作,提高问题分析、程序设计、调试与优化的能力;3. 学生能够在团队协作中发挥自己的优势,与他人共同完成项目任务。

情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情,增强学习动力;2. 学生在课程实践中,体验编程解决问题的成就感,提高自信心;3. 学生在团队协作中,学会相互尊重、沟通与协作,培养良好的团队精神。

课程性质:本课程为实践性较强的课程,以项目驱动的方式进行教学,使学生能够将所学知识应用于实际项目中。

学生特点:本年级学生已经具备一定的Java编程基础,具有较强的学习能力和探究精神,对实际项目有较高的兴趣。

教学要求:结合学生特点,课程设计需注重实践操作,鼓励学生独立思考和团队协作,提高编程能力和解决问题的能力。

通过分解课程目标为具体学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 面向对象编程基础:- 类与对象的概念及其关系- 方法定义与调用- 属性的定义与使用2. Java界面设计:- Java Swing图形用户界面- 常用组件的使用(如按钮、文本框等)- 布局管理器的应用3. 事件处理机制:- 事件的概念与分类- 事件监听器与事件处理方法- 常用事件处理机制的应用4. 钟表程序设计:- 钟表界面设计- 时间更新功能的实现- 闹钟功能的添加与实现5. 项目实践与团队协作:- 学生分组,明确项目任务与分工- 各组制定项目计划,进行项目实践- 项目成果展示与评价教学内容安排与进度:第一周:面向对象编程基础,类与对象的概念,方法的定义与调用第二周:Java界面设计,Swing组件的使用,布局管理器的应用第三周:事件处理机制,编写简单的事件处理程序第四周:钟表程序设计,实现时间显示与更新,添加闹钟功能第五周:项目实践与团队协作,完成项目任务,进行成果展示与评价教材章节关联:《Java程序设计》第四章:面向对象编程基础第五章:Java图形用户界面设计第六章:事件处理三、教学方法1. 讲授法:- 对于面向对象编程基础、Java界面设计、事件处理机制等理论知识,采用讲授法进行教学,为学生提供清晰的知识框架和概念体系。

java课程设计闹钟

java课程设计闹钟

java课程设计闹钟一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。

知识目标:学生需要掌握Java基础语法、面向对象编程思想、事件处理机制等知识。

技能目标:学生能够运用Java语言实现一个简单的闹钟程序,具备分析和解决问题的能力。

情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习和创新意识。

二、教学内容本章节的教学内容主要包括以下几个部分:1.Java基础语法:变量、数据类型、运算符、控制结构等。

2.面向对象编程:类、对象、封装、继承、多态等。

3.事件处理机制:事件监听器、事件处理函数等。

4.闹钟程序实现:分析需求、设计界面、编写代码、调试运行等。

三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。

1.讲授法:用于讲解Java基础语法和面向对象编程知识。

2.案例分析法:通过分析实际案例,让学生理解事件处理机制和闹钟程序的实现。

3.实验法:让学生动手编写和运行代码,培养实际操作能力。

四、教学资源本章节的教学资源包括教材、多媒体资料和实验设备。

1.教材:用于引导学生学习Java基础语法和面向对象编程知识。

2.多媒体资料:用于辅助讲解和展示案例分析,增强学生的学习兴趣。

3.实验设备:为学生提供实践操作的平台,培养实际编程能力。

五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

2.作业:布置与章节内容相关的编程作业,评估学生的理解和应用能力。

3.考试:期末进行闭卷考试,全面测试学生对Java基础语法、面向对象编程和事件处理机制的掌握程度。

六、教学安排本章节的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生系统地掌握知识。

2.教学时间:共计30课时,每课时45分钟,包括课堂讲解、案例分析和实验操作。

3.教学地点:教室和计算机实验室,以便学生进行实际操作。

java时钟小程序课程设计

java时钟小程序课程设计

java时钟小程序课程设计一、课程目标知识目标:1. 理解Java编程语言中时间处理的基本概念;2. 掌握使用Java语言实现时钟小程序的核心语法,如线程控制、事件处理等;3. 学习Java中日期时间API的使用,如java.util.Calendar和java.time包;4. 了解界面设计中布局管理器的应用。

技能目标:1. 能够编写Java程序,实现一个具有基本计时功能的时钟小程序;2. 能够运用所学知识,对时钟小程序进行界面设计和优化;3. 学会使用调试工具,进行程序错误排查和修正;4. 培养问题解决和编程实践能力,能够独立完成时钟小程序的开发。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发创造力和探究精神;2. 增强学生的团队合作意识,培养在项目开发中相互协作的能力;3. 强化学生的程序逻辑思维,提高分析问题和解决问题的能力;4. 培养学生严谨的科学态度和良好的编程习惯。

本课程设计针对高年级学生,他们在前期课程中已具备Java语言基础,能够适应本课程的知识深度。

课程性质为实践性、综合性课程,要求学生将理论知识与实际操作相结合,通过完成时钟小程序的设计与实现,达到巩固知识、提升技能、培养情感态度价值观的目标。

通过具体学习成果的分解,教师可进行有针对性的教学设计和评估,确保课程目标的实现。

二、教学内容1. Java基本语法复习:变量声明与使用、数据类型、运算符、控制流程(条件语句、循环语句);2. 线程概念与使用:线程的创建、启动、同步,以及线程的生命周期;- 教材章节:第8章“多线程编程”;3. Java时间处理API介绍:java.util.Calendar类的使用,java.time包中LocalTime、LocalDate、LocalDateTime类的使用;- 教材章节:第11章“日期和时间处理”;4. 界面设计基础:Swing图形用户界面设计,布局管理器介绍及应用;- 教材章节:第14章“Swing用户界面设计”;5. 时钟小程序实现:设计并实现一个简单时钟界面,完成计时功能;- 结合教材实例,进行拓展教学;6. 程序调试与优化:使用调试工具进行程序错误查找,优化程序性能;- 教材章节:第16章“程序调试与优化”;7. 项目实践:小组合作,完成一个具有附加功能(如闹钟、计时器等)的时钟小程序开发。

java课程设计闹钟

java课程设计闹钟

java 课程设计闹钟一、教学目标本章节的教学目标为:知识目标:使学生掌握Java编程语言的基本语法和结构;让学生了解并掌握面向对象编程的基本概念和方法。

技能目标:培养学生运用Java语言进行程序设计的能力;培养学生运用面向对象的思想解决实际问题的能力。

情感态度价值观目标:培养学生对计算机科学的兴趣和热情;培养学生勇于探索、积极思考的科学精神。

二、教学内容本章节的教学内容为:1.Java编程语言的基本语法和结构,包括数据类型、运算符、控制结构等;2.面向对象编程的基本概念,包括类、对象、继承、多态等;3.Java编程语言的应用实例,包括计算器程序设计、闹钟程序设计等。

三、教学方法本章节的教学方法为:1.讲授法:通过讲解Java编程语言的基本语法和结构,让学生掌握编程的基本知识;2.案例分析法:通过分析具体的Java编程实例,让学生了解编程语言的应用;3.实验法:让学生动手编写Java程序,培养学生的编程能力和实践能力。

四、教学资源本章节的教学资源为:1.教材:《Java编程语言》;2.参考书:《Java核心技术》;3.多媒体资料:Java编程语言的教学视频;4.实验设备:计算机。

五、教学评估本章节的教学评估方式为:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:通过学生提交的作业评估学生的编程能力和理解程度;3.考试:通过期末考试评估学生对Java编程语言的掌握程度。

评估方式应客观、公正,能够全面反映学生的学习成果。

六、教学安排本章节的教学安排为:1.教学进度:按照教材的章节顺序进行教学,确保学生在每个阶段都能够掌握相应的知识点;2.教学时间:安排每周固定的课时进行教学,保证学生有足够的时间学习和发展;3.教学地点:选择适合编程实践的实验室或者教室,提供给学生良好的学习环境。

教学安排应合理、紧凑,确保在有限的时间内完成教学任务,同时考虑学生的实际情况和需要。

七、差异化教学本章节差异化教学的内容为:1.根据学生的学习风格,提供不同的教学方式,如视觉教学、动手实践等;2.根据学生的兴趣,提供不同的编程项目,如游戏开发、设计等;3.根据学生的能力水平,提供不同难度的编程任务,让学生能够挑战自我,不断提高。

Java课程设计报告(LED时钟)

Java课程设计报告(LED时钟)

攀枝花学院学生课程设计(论文)题目: LED时钟学生姓名:张奕学号: 201210802028 所在院(系):数学与计算机学院专业:信息与计算科学班级: 2012级信息与计算科学1班指导教师:吴建兵职称:讲师二O一四年六月十六日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目时钟(LED方式)1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。

2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)编写一个时钟(LED方式)程序,要求:(1)在屏幕上用文字显示日期(年、月、日、星期)与时间。

(2)时间显示要求能动态显示时、分、秒。

3、主要参考文献[1]朱福喜.《Java语言程序设计》(第二版).科学出版社[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社[3] Deitel.《Java大学基础教程》(第六版).电子工业出版社[4] MaryCampione.《Java语言导学》(第四版).机械工业出版社[5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社[6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社4、课程设计工作进度计划1、设计动员,布置任务,选题(1天)2、查阅资料,分析、讨论与设计(1天)3、编写程序,进行调试(4天)4、完成模块联调,进行测试(2天)5、成果验收,完成设计报告(2天)指导教师(签字)日期年月日教研室意见:年月日学生(签字):接受任务时间:年月日注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表题目名称时钟(LED方式)评分项目分值得分评价内涵工作表现20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。

02 科学实践、调研7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。

时钟(LED方式)java课程设计

时钟(LED方式)java课程设计

摘要随着经济全球化的发展,推动生活节奏的加快,也给时间赋予了更重要的意义。

基于方便人们更好的掌握时间,我设计出了这个小时钟。

本时钟是一个基于Java语言设计而成的一个小程序,目的是显示日期和时间,并且能调准时钟。

整个程序从符合操作简便、界面友好、灵活使用的要求出发,完成调用、调整的全过程。

本课程设计报告介绍了时钟的构成,论述了目标功能模块;给出了时钟设计的步骤。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

关键字时钟,Java程序设计,面向对象,设计目录摘要..............................................................................................................................- 1 - 1前言..........................................................................................................................- 3 -1.1 课程设计目的 ....................................................................................................- 3 -1.2 课程设计的实验环境..........................................................................................- 3 -1.3 课程设计的预备知识..........................................................................................- 3 -1.4 课程设计要求 ....................................................................................................- 3 -2 可行性分析................................................................................................................- 4 -2.1 社会可行性........................................................................................................- 4 -2.2 市场可行性........................................................................................................- 4 -2.3 技术可行性........................................................................................................- 4 -2.4 经济可行性........................................................................................................- 4 -3 总体设计....................................................................................................................- 5 -3.1开发平台 ............................................................................................................- 5 -3.2时钟功能的概述..................................................................................................- 5 -3.3时钟数字显示 .....................................................................................................- 5 -3.3时钟指针显示 .....................................................................................................- 5 -3.4时钟的设置.........................................................................................................- 5 -4 代码设计....................................................................................................................- 6 -4.1 部分源码............................................................................................................- 6 -5 界面设计....................................................................................................................- 9 -5.1课程设计主要内容 ..............................................................................................- 9 -5.2概要设计 ............................................................................................................- 9 -5.2.1自定义类说明...........................................................................................- 9 -5.3表单设计 .......................................................................................................... - 10 -5.4 界面展示.......................................................................................................... - 11 -5.4.1日期的界面 ............................................................................................ - 11 -5.4.2 部分代码 ............................................................................................... - 11 -5.4.3 时间的界面............................................................................................ - 12 -5.4.4 部分代码 ............................................................................................... - 12 -5.4.5整体界面................................................................................................ - 14 - 6结束语....................................................................................................................... - 15 - 参考文献................................................................................................................ - 16 -攀枝花学院java课程设计前言1 前言1.1 课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

辽宁工业大学JA V A程序设计课程设计(论文)题目:时钟院(系):软件学院专业班级:软件技术班学号:学生姓名:指导教师:***教师职称:助教起止时间: 2009.12.1至2009.12.16程序设计专题(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1课程设计主要内容 (2)2.2概要设计 (2)2.2.1自定义类说明 (2)2.3详细设计 (3)2.4测试分析 (16)2.4.1程序运行情况 (16)2.4.2程序异常处理 (16)第3章课程设计总结 (17)参考资料18第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。

1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

第2章课程设计内容2.1课程设计主要内容我设计的时钟有的界面良好,比较简洁美观,程序有很强的实用性,实现程序与电脑的时间的同步。

可以显示时钟,也可以显示分针秒针,并可以在相应位置调整时间。

而且初始运行会自动与电脑的时间校对,一般默认为同步,但还可以自己再次调节,提高了实用性。

本系统共包括1个java源文件。

1、Clock源文件是本程序的主函数其作用是初始化棋盘。

2、setCurrentTime源文件实现电脑设置时间。

3、paintHourPointer源文件为时针.4、paintSecondPointer源文件实现人与电脑设置秒针.5、paintMinuteDot源文件人与电脑设置分针.2.2概要设计2.2.1自定义类说明*********************************************************** 类名: Clock ** 作用: 自定义主类,对鼠标拖拽的初始界面进行声明** 继承的父类: JComponent类** 实现的接口: 没有***********************************************************表1-成员变量表表2-方法表2.3详细设计import java.awt.*;import java.awt.geom.Ellipse2D;import java.awt.geom.GeneralPath;import java.awt.geom.Line2D;import java.awt.geom.Rectangle2D;import java.util.Calendar;import java.util.Date;import javax.swing.BorderFactory;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.UIManager;public class Clock extends JComponent{private static final Color INTEGRAL_COLOR = new Color(0, 128, 128);private int radius;private Calendar currentTime = Calendar.getInstance();private double s = 0.03;public Clock(int radius){this.radius = radius;}public void setCurrentTime(Date time) //设置当前时间{this.currentTime.setTime(time);}public void setCurrentTime(long millis){this.currentTime.setTimeInMillis(millis);}public Dimension getPreferredSize(){Insets insets = getInsets();int r = (int) (radius == -1 ? 0 : radius*(1+s))+1;return new Dimension(r * 2 + insets.left + insets.right,r * 2 + insets.top + insets.bottom); //返回一个指定宽、高的Dimension}protected void paintComponent(Graphics g){super.paintComponent(g);Graphics2D g2d = (Graphics2D) g;g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.V ALUE_ANTIALIAS_ON);Insets insets = getInsets();int wid = getWidth() - insets.left - insets.right;int hei = getHeight() - insets.top - insets.bottom;int r = (int) ((Math.min(wid, hei)) / 2 / (1+s));g2d.translate(insets.left + r * (1+s), insets.top + r * (1+s));g2d.scale(1, -1);for (int i = 0; i < 60; i++) {int angle = 90 - i * 6;double pos[] = calcPos(r, angle);paintMinuteDot(r, g2d, pos[0], pos[1], i % 5 == 0);}paintHourPointer(r, g2d);paintMinutePointer(r, g2d);paintSecondPointer(r, g2d);paintCenterPoint(g2d);g2d.scale(1, -1);g2d.translate(-insets.left - r * (1+s), -insets.top - r * (1+s));}private void paintCenterPoint(Graphics2D g2d){g2d.setColor(Color.BLUE);Rectangle2D rect = new Rectangle2D.Double(-2, -2, 4, 4);g2d.fill(rect);}private void paintMinutePointer(int r, Graphics2D g2d){int minute = currentTime.get(Calendar.MINUTE);int second = currentTime.get(Calendar.SECOND);double angle = 90 - (minute + second / 60.0) * 6;Shape pointerShape = createPointerShape(r * 0.8, r * 0.04, r * 0.08, angle);g2d.setColor(Color.LIGHT_GRAY);g2d.fill(pointerShape);g2d.setColor(Color.DARK_GRAY);g2d.draw(pointerShape);}private void paintHourPointer(int r, Graphics2D g2d){int hour = currentTime.get(Calendar.HOUR);int minute = currentTime.get(Calendar.MINUTE);int second = currentTime.get(Calendar.SECOND);double angle = 90 - (hour + minute / 60.0 + second / 3600.0) * 30;Shape pointerShape = createPointerShape(r * 0.6, r * 0.06, r * 0.1, angle);g2d.setColor(Color.LIGHT_GRAY);g2d.fill(pointerShape);g2d.setColor(Color.DARK_GRAY);g2d.draw(pointerShape);}private Shape createPointerShape(double r1, double r2, double r3, double angle){GeneralPath gp = new GeneralPath();double[] pos = calcPos(r1, angle);double[] pos1 = calcPos(r2, angle + 90);gp.append(new Line2D.Double(pos[0], pos[1], pos1[0], pos1[1]), true);double[] pos2 = calcPos(r3, angle + 180);gp.lineTo((float)pos2[0], (float)pos2[1]);double[] pos3 = calcPos(r2, angle + 270);gp.lineTo((float)pos3[0], (float)pos3[1]);gp.closePath();return gp;}private void paintSecondPointer(int r, Graphics2D g2d){g2d.setColor(Color.BLACK);int second = currentTime.get(Calendar.SECOND);int angle = 90 - second * 6;double pos[] = calcPos(r * 0.9, angle);double pos1[] = calcPos(r * 0.2, angle + 180);Line2D line = new Line2D.Double(pos1[0], pos1[1], pos[0], pos[1]);g2d.draw(line);}private void paintMinuteDot(int r, Graphics2D g2d, double x, double y, boolean flag){g2d.setColor(flag ? Color.RED : Color.BLACK);if (flag) {//Rectangle2D rect = new Rectangle2D.Double(Ellipse2D rect = new Ellipse2D.Double(x - r * s, y - r * s, r * s * 2, r * s * 2);g2d.fill(rect);}else {//Rectangle2D rect = new Rectangle2D.Double(Ellipse2D rect = new Ellipse2D.Double(x - r * 0.02, y - r * 0.02, r * 0.04, r * 0.04);g2d.fill(rect);}}private double[] calcPos(double r, double angle){double radian = Math.toRadians(angle);double x = r * Math.cos(radian);double y = r * Math.sin(radian);return new double[] {x, y};}public static void main(String[] args){try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch (Exception e) {e.printStackTrace();}final Clock clock = new Clock(50);clock.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));JFrame f = new JFrame( "软件081班071404011 孙庆贺");//f.setBounds(380,200,500,600);f.getContentPane().add(clock, BorderLayout.CENTER);f.pack();f.setLocationRelativeTo(null);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);new Thread() {public void run(){while (true) {try {Thread.sleep(1000);} catch (InterruptedException ex) { ex.printStackTrace();}clock.setCurrentTime(System.currentTimeMillis()); clock.repaint();}}}.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() {while (true) {try {Thread.sleep(1000);}catch (Exception ex) {}s+=6;if (s >= 360) {s = 0;m+=6;if (m == 72 || m == 144 || m == 216 || m == 288) {}if (m >= 360) {m = 0;h+=6;}if (h >=360) {h = 0;}}this.repaint();}}}int x, y, r;int h, m, s;//小时,分钟,秒double rad = Math.PI / 180;public ClockPaint(int x, int y, int r) {this.x = x;this.y = y;this.r = r;Calendar now = new GregorianCalendar();s = now.get(Calendar.SECOND) * 6;//获得秒转换成度数m = now.get(Calendar.MINUTE) * 6;//获得分钟h = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30 + now.get(Calendar.MINUTE) / 12 * 6;//获得小时Thread t = new Thread(this);t.start();}public void paint(Graphics g) {//清屏super.paint(g);g.setColor(Color.BLACK);g.fillRect(0, 0, r * 3, r * 3);g.setColor(Color.WHITE);g.drawOval(x, y, r * 2, r * 2);//秒针g.setColor(Color.RED);int x1 = (int)((r - 10) * Math.sin(rad * s));//定义MyTimer类class MyTimer1 extends JFrame{ static int count=0; //判断是否重定义了时间//构造函数public MyTimer1(){//定义窗口大小setSize(320, 200);//定义窗口标题setTitle("测试自定义时钟类!");Container c = getContentPane();// new ClockCanvas("北京时间", "GMT+8")c.add(new ClockCanvas("北京时间", "GMT+8")); } }//定义接口interface TimerListener1{void timeElapsed(Timer1 t);}class Timer1 extends Thread //类Timer1{private TimerListener1 target;private int interval;public Timer1(int i, TimerListener1 t){target = t;interval = i;setDaemon(true);}public void run(){ try {while (!interrupted()){sleep(interval);target.timeElapsed(this);} }catch(InterruptedException e) {}} }class ClockCanvas extends JPanel //clockcanvasimplements TimerListener1{static int seconds = 0;private String city;private GregorianCalendar calendar;//构造函数public ClockCanvas(String c, String tz){city = c;calendar = new GregorianCalendar(TimeZone.getTimeZone(tz)); Timer1 t = new Timer1(1000, this);t.start();setSize(180, 180);}//绘制钟面public void paintComponent(Graphics g){super.paintComponent(g);g.drawOval(100, 5, 120, 120);g.drawOval(101, 6, 118, 118);//分离时间double hourAngle = 2 * Math.PI* (seconds - 3 * 60 * 60) / (12 * 60 * 60);double minuteAngle = 2 * Math.PI* (seconds - 15 * 60) / (60 * 60);double secondAngle = 2 * Math.PI* (seconds - 15) / 60; }public void timeElapsed(Timer1 t) {calendar.setTime(new Date());if(MyTimer1.count==1) {int a=1;seconds=MyTimer.intHour*60*60+MyTimer.intMinute*60+MyTimer.intSecond; seconds+=a;//a为秒自加repaint();}else{ seconds = calendar.get(Calendar.HOUR) * 60 * 60+ calendar.get(Calendar.MINUTE) * 60+ calendar.get(Calendar.SECOND);repaint();}} }//定义时钟类class MyTimerimplements TimerListener{//定义时钟类的属性static int intHour,intMinute,intSecond;//构造函数public MyTimer(){setCurrentTimeAsSystemTime();Timer t = new Timer(1000, this); //实例Timer类,里面有run方法t.start();}//显示当前时间public void displayCurrentTime(){JOptionPane.showMessageDialog(null,intHour+":"+intMinute+":"+intSecond); }//设定当前时间public void setCurrentTime() {//从对话框输入时,分秒String strTemp=JOptionPane.showInputDialog(null,"请输入当前小时(24小时制):"); int iHour=Integer.parseInt(strTemp);strTemp=JOptionPane.showInputDialog(null,"请输入当前分:");int iMinute=Integer.parseInt(strTemp);strTemp=JOptionPane.showInputDialog(null,"请输入当前秒:");int iSecond=Integer.parseInt(strTemp);//设定当前时间为对话框输入的时间if(iHour>=0&&iHour<24)intHour=iHour;transform(angle);g.setcolor(color);//设定当前时间为系统时间,构造函数调用public void setCurrentTimeAsSystemTime() {//定义Date类的一个对象,用来获取系统时间Date timeCurrent=new Date();catch(InterruptedException e) {} } }2.4测试分析2.4.1程序运行情况当程序正常运行的时候,它能清晰的显示时钟界面。

相关文档
最新文档