JAVA实验报告二(运用JavaFx实现时钟动画)

合集下载

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课程项目报告项目题目:利用JAVA实现一个小时钟的程序专业班级:10软件工程利用JAVA实现一个时钟的小程序1.软件开发的需求分析在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。

使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。

面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。

为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。

使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

2.具体实现2.1设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。

Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。

这将减少平常出错的50%。

而且,Java很小,整个解释器只需215K的RAM。

因此运用JAVA程序编写小时钟程序,实现简单显示时间的功能。

本次课程设计做的是Java简单小时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。

程序实现了小时钟的基本功能。

2.2设计方法在设计简单小时钟时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。

Java编写动态时钟的标准显示

Java编写动态时钟的标准显示
g.drawString("Minute", 135, getHeight()-15);
g.setColor(Color.white);
g.fillRect(180, getHeight()-25, 30,15);
g.setColor(Color.black);
g.drawString(""+minute, 190,getHeight()-15 );
public ClockAnimation()
{
add(clock);
Timer timer=new Timer(1000,new TimerListener());
timer.start();
}
private class TimerListener implements ActionListener
g.drawString("Hour", 60, getHeight()-15);
g.setColor(Color.white);
g.fillRect(90, getHeight()-25, 30,15);
g.setColor(Color.black);
g.drawString(""+hour, 95,getHeight()-15 );
g.drawString("Second", 230, getHeight()-15);
g.setColor(Color.white);
g.fillRect(280, getHeight()-25, 30,15);
g.setColor(Color.black);
g.drawString(""+second, 290,getHeight()-15 );

Java模拟时钟制作案例

Java模拟时钟制作案例

程序代码

主类
程序代码
程序代码
运行效果

运行效果
面板刻度


绘制刻度
l1=new Line2D.Double[60]; for(int i=0 ;i<l1.length;i++) { double b[]=new double[4]; int j; if(i%5==0){ if(i%15==0){ j=50; }else { j=60; }

构建框架


主类time1. 实现接口。 继承Jframe。 添加main方法
完善代码
添加timer 通过Date获取当前时间 通过SimpleDateFormat处理时间格式。 实例化主类,使其在控制台打印当前时间, 每隔一秒打印一次。 修改后的代码如下。

程序代码

导入类和文件。
程序代码
数字时钟
添加JLabel,在JLabel上显示时间 把JLabel添加到JFrame上。

程序代码

导入类和文件。
程序代码
数字时钟

运行效果。
绘制秒针

使用直线绘制秒针。
定义秒针Line2D.Double l Line2D.Double l =new Line2D.Double(125,50,125,125);
面板刻度


绘制刻度
}else { j=70; } b[0]=125+80*Math.cos((i*6-90)*Math.PI/180d); b[1]=125+80*Math.sin((i*6-90)*Math.PI/180f); b[2]=125+j*Math.cos((i*6-90)*Math.PI/180f); b[3]=125+j*Math.sin((i*6-90)*Math.PI/180f); l1[i] =new Line2D.Double(b[0],b[1],b[2],b[3]); }

java 时钟

java 时钟

实习报告课程名称信息系统认知实习实习题目java时钟动画专业班级学号学生姓名实习成绩指导教师2010年1月前言设计基本的内容。

现在的各种时钟花样百出,千奇百怪,功能亦是越来越先进了。

我很喜欢这些各式各样的时钟,所以希望自己也能设计出一个来。

于是,我希望自己能够用自己所学的Java知识设计出一个自己的时钟动画,即使是最简单的,但我相信这是暂时的。

只要我能够努力学好Java知识,将来一定能够设计出更好更完美的时钟动画。

第一章技术介绍Java技术介绍、编程环境介绍JAVA技术介绍:Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。

(题外话:Java热门的原因之一就是一个跨平台的概念,和跨平台类似跨浏览器的好处也是如此,这也是现在AJAX技术流行的原因之一。

另外现在热炒的RIA富客户端的概念下的技术除了AJAX外还有Adobe的Flash/Flex,微软的Silver Light,SUN的JavaFX等,个人更看好FLash/Flex,原因是Flash插件在浏览器端占用率很高)Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java 、C 、VB、C++依次排名前4位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。

Java编程语言与众不同之处在于:Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。

编译只进行一次,而解释在每次运行程序时都会进行。

编译后的字节码采用一种针对JVM 优化过的机器码形式;解释器是JVM 的实现。

这段是摘自网上的,编译原理学的不是很好,对这门语言的背后运行机制理解到这样了。

Java平台是一种纯软件平台,它有三个版本Java SE、JavaEE、Java ME。

Java SE(Java Platform,Standard Edition)这个版本以前叫做J2SE,后来版本号从1.4直接跳到5.0,其实也就是1.5,所以就叫成Java SE 5.0。

使用Swing绘制动态时钟

使用Swing绘制动态时钟

使⽤Swing绘制动态时钟本⽂实例为⼤家分享了利⽤Swing绘制⼀个动态时钟的具体代码,供⼤家参考,具体内容如下效果代码在下⾯,可跳过解析。

前⾔编程实现⼀个时钟利⽤Swing绘制⼀个时钟,只能是静态的。

利⽤Calendar类获取当前的时分秒,然后根据数学公式绘制相应的时钟就可以了。

如果静态的时钟已经⾜够你使⽤,那么就⽆须⽤到线程的概念。

如何让时钟“动起来”当然了,动起来肯定是不可能的,但是我们可以利⽤⼈眼的视觉,让时钟“好像动起来”,其实着很简单,只要让当前的图像每隔⼀秒种刷新⼀次就可以了。

这样秒针在动,数字时间也在动,整个时钟就好像“动起来了”线程利⽤线程实现刷新,刷新间隔是1秒,每次刷新都先⽣成当前的时间,然后JVM⼜会⾃动调⽤paintComponent⽅法绘制图形,这样就好像时钟动起来了。

Thread thread = new Thread(){public void run(){while(true){StillClock clock = new StillClock();MessagePanel messagePanel1=new MessagePanel(clock.getHour()+":"+clock.getMinute()+":"+clock.getSecond());//设置显⽰居中messagePanel1.setCentered(true);//设置前景颜⾊messagePanel1.setForeground(Color.black);//设置字体messagePanel1.setFont(new Font("Courier",Font.BOLD,16));add(clock);add(messagePanel1,BorderLayout.SOUTH);clock.setVisible(true);validate(); //接下来会每隔⼀秒重绘⼀次时钟——即(从frame中将clock组件删除),因此调⽤validate⽅法,使容器重新布置其⼦组件try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}clock.setVisible(false);remove(clock); //在⽗容器中将其删除clock.invalidate(); //使容器失效}}};thread.start();线程代码解析Thread thread = new Thread(){};注意结尾使⽤了分号,既然使⽤了线程,那么需要重写它的run⽅法:public void run(){}既然想让时钟⼀直动起来,那么死循环是最好的选择while(true){}在while⾥⾯,每次都先⽣成当前的时间:StillClock clock = new StillClock();这⾥⽣成了⼀个⽆参构造的StillClock类,StillClock的⽆参构造⽅法⾥⾯会⾃动⽣成当前的时间。

JAVAfx画时钟

JAVAfx画时钟

中南大学《Java语言程序设计》实验报告题目:运用JavaFx画时钟及实现时钟动画学生姓名:**指导老师:鲁鸣鸣学院:信息科学与工程学院专业班级:***********完成时间:2014/12/18目录摘要 (3)第一章绪论 (4)1.1实验背景 (4)1.2 实验意义 (4)1.3 javaFx的介绍 (4)第二章需求分析 (5)2.1题目描述 (5)2.2题目分析 (6)2.3 解决方案 (6)第三章详细设计 (7)第四章运行结果 (17)第五章调试报告 (18)参考文献 (18)摘要Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。

由James Gosling和同事们共同研发,并在1995年正式推出。

Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。

1995年更名为Java,并重新设计用于开发Internet应用程序。

用Java 实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。

从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。

另一方面,Java技术也不断更新。

Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

基于全新的JavaFx进行了有关时钟的操作。

完成了有关时钟的绘图以及时钟的动画。

关键词:javaFx 时钟第一章绪论1.1实验背景Java是计算机专业学生的一门专业课程,着重讲述Java这门程序设计语言的基本概念、语法和编程的技术方法对于学生从事Java的研发、使用和维护有重要意义。

通过本课程的学习,我们应能从软件开发、设计等角度去了解、分析和研究Java语言,建立起对Java的全面认识,树立全面地、发展地看问题的观点,从而加深对各种类型Java系统的了解。

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

JA V A实验报告实验二运用JavaFx实现时钟动画班级:计算机科学与技术1306学号:***********名:***指导教师:***2014 年12 月 1 日目录一.概述 (3)二.总体方案设计 (4)三.详细设计 (4)四.程序的调试与运行结果说明 (5)五.课程设计总结 (7)六.后记 (7)七.附录 (7)参考文献 (9)一概述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;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.Timer;import java.awt.geom.*;import java.util.*;class Clock extends Canvasimplements 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);pointSX[0]=0; //12点秒针位置pointSY[0]=-100;pointMX[0]=0; //12点分针位置pointMY[0]=-90;pointHX[0]=0; //12点时针位置pointHY[0]=-70;double angle=6*Math.PI/180; //刻度为6度for(int i=0;i<59;i++) //计算出各个数组中的坐标{ pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i];pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle);pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i];pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle);pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle); }for(int i=0;i<60;i++){ pointSX[i]=pointSX[i]+120; //坐标平移pointSY[i]=pointSY[i]+120;pointMX[i]=pointMX[i]+120; //坐标平移pointMY[i]=pointMY[i]+120;pointHX[i]=pointHX[i]+120; //坐标平移pointHY[i]=pointHY[i]+120;}secondLine=new Line2D.Double(0,0,0,0);muniteLine=new Line2D.Double(0,0,0,0);hourLine=new Line2D.Double(0,0,0,0);secondTime.start(); //秒针开始计时}public void paint(Graphics g){ for(int i=0;i<60;i++) //绘制表盘上的小刻度和大刻度{ int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){ g.setColor(Color.black);g.fillOval(m-4,n-4,8,8);}else{ g.setColor(Color.black);g.fillOval(m-2,n-2,4,4);}}g.fillOval(115,115,10,10); //钟表中心的实心圆Graphics2D g_2d=(Graphics2D)g;g_2d.setColor(Color.black);g.drawOval(20,20,200,200);g_2d.draw(secondLine);BasicStroke bs=new BasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.pink);g_2d.draw(muniteLine);bs=new BasicStroke(6f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.cyan);g_2d.draw(hourLine);}public void actionPerformed(ActionEvent e){ if(e.getSource()==secondTime){date=new Date();String s=date.toString();hour=Integer.parseInt(s.substring(11,13));munite=Integer.parseInt(s.substring(14,16));second=Integer.parseInt(s.substring(17,19)); //获取时间中的秒int h=hour%12;a=second; //秒针端点的坐标b=munite; //分针端点的坐标c=h*5+munite/12; //时针端点的坐标secondLine.setLine(120,120,(int)pointSX[a],(int)pointSY[a]);muniteLine.setLine(120,120,(int)pointMX[b],(int)pointMY[b]);hourLine.setLine(120,120,(int)pointHX[c],(int)pointHY[c]);repaint();} if(e.getSource()==jb){secondTime.start();}if(e.getSource()==jb1){secondTime.stop();}}public static void main(String args[]){JFrame win=new JFrame("clock");JPanel jp=new JPanel();jp.add(jb);jp.add(jb1);Clock clock=new Clock();jb.addActionListener(clock);jb1.addActionListener(clock);win.add(clock,BorderLayout.CENTER);win.add(jp,"South");win.setVisible(true);win.setSize(246,300);win.setDefaultCloseOperation(3) ;win.validate();}}参考文献[1] Java语言程序设计郭克华段桂华清华大学出版社。

相关文档
最新文档