Java小时钟课程设计_第1页
Java小时钟课程设计_第2页
Java小时钟课程设计_第3页
Java小时钟课程设计_第4页
Java小时钟课程设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用JAVA实现一个时钟的小程序1 设计方法 在设计简单小时钟时,需要编写1个Java源文件:Clock.java2 程序功能图及程序相关说明2.1 主功能框启动小时钟界面秒针走时分针走时时针走时关闭小时钟图1 程序基本框图2.2 程序分析程序中引入的包 package Clock import java.awt.Clock /颜色类 import java.awt.Graphics /图形类 import java.awt.event.WindowAdapter /窗口事件适配器 import java.awt.event.WindowEvent /窗口事件类 import java.uti

2、l.Calendar /日历类import java.util.GregorianCalendar /使用GregorianCalendar对象的get方法 (参数)获取时、分、秒用户自定义类说明 * * 类名:Clock * * 作用:定义小时钟 * * 继承的父类:JFrame * *public class clock extends JFrame定义的对象:ClockPaint size /窗口大小 Resizable /调整窗口大小 Location / 初始位置 Title /窗口标题 Visible /窗口可视化 WindowListener,WindowClosing /创建窗

3、口,并实现关闭功能 定义子类:ClockPaint继承的父类名:JPanel继承的接口名:Runnableclass ClockPaint extends JPanel implements Runnableint h, m, s / 小时,分钟,秒主要成员方法:public ClockPaintthis.x = xthis.y = ythis.r = rs = now.get(Calendar.SECOND) * 6 / 获得秒转换成度数m = now.get(Calendar.MINUTE) * 6 / 获得分钟h = (now.get(Calendar.HOUR_OF_DAY) - 12

4、) * 30+ now.get(Calendar.MINUTE) / 12 * 6 / 获得小时主要成员方法: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)int

5、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.

6、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 = 29for (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

7、- y1 + 5)d += 30 / 小点d = 0;for (int i = 0; i = 360) s = 0m += 6if (m = 72 | m = 144 | m = 216 | m = 288) h += 6if (m = 360) m = 0h += 6;if (h = 360) h = 0;this.repaint();3.设计结果与分析将5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。分别编译这5个Java源文件,或运行“javac *.java”命令,编译全部的源文件,

8、然后运行连接服务器的主类,即运行Clock类。连接完毕后在运行注册的主函数类,即运行LogIn类。运行Clock.java,运行结果如下:4主要代码:import java.awt.Color;import java.awt.Graphics;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JP

9、anel;public class Clock extends JFrame /无参数构造器 public Clock() ClockPaint cp = new ClockPaint(20, 20, 70); this.add(cp); this.setSize(200, 200); this.setResizable(false); this.setLocation(260, 120); this.setTitle(小时钟); this.setVisible(true); addWindowListener(new WindowAdapter() public void windowClo

10、sing(WindowEvent e) System.exit(0); ); public static void main(String s) new Clock(); /表盘类,继承于JPanel,并实现Runnable接口,用于多线程class ClockPaint extends JPanel implements Runnable int x, y, r; int h, m, s;/ 小时,分钟,秒 double rad = Math.PI / 180;/构造器,初始化 public ClockPaint(int x, int y, int r) this.x = x;/坐标x th

11、is.y = 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();/表开始走动 /画

12、表盘 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); int y1 = (int) (r -

13、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

14、 / 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 +=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论