快速业务通道

[JAVA100例]029、绘制指针的时钟 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21

[JAVA100例]029、绘制指针的时钟

时间:2011-01-09

import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.event.*; import javax.swing.*; import javax.swing.Timer; /** * <p>Title: 时钟</p> * <p>Description: 本实例演示使用图形绘制一个图形时钟</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: Clock.java</p> * @version 1.0 */ public class Clock extends JFrame implements ActionListener{   Timer timer;   int x,y,old_X,old_Y, r,x0,y0,w,h,ang;   int sdo,mdo,hdo,old_M,old_H;   TimeZone tz =TimeZone.getTimeZone("JST");   final double RAD=Math.PI/180.0; public static void main(String[] args){   Clock cl = new Clock();  } /** *<br>方法说明:实现ActionListener类必须过载的方法 *<br>输入参数: *<br>返回类型: */  public void actionPerformed(ActionEvent e) {       timer.restart();   } /** *<br>方法说明:构造器,显示窗体,并添加了一个秒表 *<br>输入参数: *<br>返回类型: */  Clock(){   super("Clock");   setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);   setBackground(new Color(0,0,192));   setSize(300,300);   show();   int delay = 1000;   //窗体添加事件监听,监听秒表的触发   ActionListener taskPerformer = new ActionListener() {    public void actionPerformed(ActionEvent evt) {      repaint();    }   };   new Timer(delay, taskPerformer).start();  } /** *<br>方法说明:绘制图形 *<br>输入参数: *<br>返回类型: */  public void paint( Graphics g ) {   Insets insets = getInsets();    int L0 = (insets.left)/2, T0 = (insets.top)/2;    int hh,mm,ss;    String st;    h=getSize().height;    //绘制圆形    g.setColor(Color.white);    g.drawOval(L0+30,T0+30,h-60,h-60);    g.drawOval(L0+32,T0+32,h-64,h-64);    r=h/2-30;    x0=30+r-5+L0;    y0=30+r-5-T0;    ang=60;    for (int i=1; i<=12; i++) {     x=(int)((r+10)*Math.cos(RAD*ang)+x0);     y=(int)((r+10)*Math.sin(RAD*ang)+y0);     g.drawString(""+i,x,h-y);     ang-=30;    }    x0=30+r+L0; y0=30+r+T0;    //获取时间    Calendar now=Calendar.getInstance();    hh=now.get(Calendar.HOUR_OF_DAY);//小时    mm=now.get(Calendar.MINUTE);//分钟    ss=now.get(Calendar.SECOND);// 秒    g.setColor(Color.pink);    g.fillRect(L0,T0,60,28);//填充的矩形    g.setColor(Color.blue);    if (hh < 10) st="0"+hh;   else st=""+hh;    if (mm < 10) st=st+":0"+mm; else st=st+":"+mm;    if (ss < 10) st=st+":0"+ss; else st=st+":"+ss;    g.drawString(st,L0,T0+25);    //计算时间和图形的关系    sdo=90-ss*6;    mdo=90-mm*6;    hdo=90-hh*30-mm/2;    //擦除秒针    if (old_X > 0) {     g.setColor(getBackground());     g.drawLine(x0,y0,old_X,(h-old_Y));    } else {     old_M=mdo;     old_H=hdo;    }    //绘制秒针    g.setColor(Color.yellow);    x=(int)((

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号