Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 448|回复: 0

[Swing学习]世界时钟

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-10 23:57:01 | 显示全部楼层 |阅读模式


    1. import java.awt.*;
    2. import java.awt.event.*;
    3. import java.util.*;
    4. public class TimerTest
    5. {
    6. public static void main (String[] args)
    7. {   TimerTestFrame f= new TimerTestFrame("世界时钟");
    8. }
    9. }
    10. class TimerTestFrame extends Frame
    11. {
    12.    public TimerTestFrame(String s)
    13.    {
    14.      super(s);
    15.      addWindowListener(new
    16.      WindowAdapter()
    17.      {
    18.          public void windowClosing(WindowEvent e)
    19.          {
    20.             dispose();
    21.               System.exit(0);
    22.          }
    23.       });
    24.       setLayout(new GridLayout(2,6));
    复制代码

      
      

    1.           ClockCanvas clk1=new ClockCanvas("北京","GMT+8");  //创建时钟
    2.       ClockCanvas clk2=new ClockCanvas("巴黎","GMT+2");
    3.       ClockCanvas clk3=new ClockCanvas("华盛顿","GMT-4");
    4.       ClockCanvas clk4=new ClockCanvas("洛衫矶","GMT-7");
    5.       ClockCanvas clk5=new ClockCanvas("伦敦","GMT+1");
    6.       ClockCanvas clk6=new ClockCanvas("芝加哥","GMT-5");
    7.       add(clk1);add(clk2);add(clk3);
    8.            add(clk4);add(clk5);add(clk6);
    9.       setSize(500,350);  //设置框架宽高
    10.       setVisible(true);
    11.       }
    12.       }
    13.       class ClockCanvas extends Canvas implements Runnable
    14.       {
    15.       private int seconds=0;
    16.       private String city;
    17.       private GregorianCalendar calendar;
    18.       Thread t;
    19.       public ClockCanvas(String c,String tz)
    20.       {
    21.             city=c;
    22.             calendar=new GregorianCalendar(TimeZone.getTimeZone(tz));
    23.             t=new Thread(this);
    24.             t.start();
    25.             setSize(125,125);  //设置画布大小
    26.             setBackground(Color.black);
    27.       }
    28. //重写父类的方法绘制时钟图形
    29.       public void paint(Graphics g)
    30.       {
    31.       Graphics2D g2d=(Graphics2D)g;
    32.       BasicStroke bstroke=new BasicStroke(2.0f);
    33.       g2d.setStroke(bstroke);
    34.       g2d.setColor(Color.green);
    35.       g2d.drawOval(0,0,100,100);
    36.       bstroke=new BasicStroke(5.0f);
    37.       g2d.setStroke(bstroke);
    38.       g2d.drawLine(50,0,50,5);
    39.       g2d.drawLine(0,50,5,50);
    40.       g2d.drawLine(50,95,50,98);
    41.       g2d.drawLine(95,50,98,50);
    42.       double hourAngle=2*Math.PI*(seconds-3*60*60)/(12*60*60);
    43.       double minuteAngle=2*Math.PI*(seconds-15*60)/(60*60);
    44.       double secondAngle=2*Math.PI*(seconds-15)/(60);
    45.       bstroke=new BasicStroke(5.0f);
    46.       g2d.setStroke(bstroke);
    47.       g2d.drawLine(50,50,50+(int)(30*Math.cos(hourAngle)),50+(int)(30*Math.sin(hourAngle)));
    48.       bstroke=new BasicStroke(3.0f);
    49.       g2d.setStroke(bstroke);
    50.      g2d.drawLine(50,50,50+(int)(40*Math.cos(minuteAngle)),50+(int)(40*Math.sin(minuteAngle)));
    51.      bstroke=new BasicStroke(1.0f);
    52.     g2d.setStroke(bstroke);
    53.     g2d.drawLine(50,50,50+(int)(45*Math.cos(secondAngle)),50+(int)(45*Math.sin(secondAngle)));
    54.     g2d.setColor(Color.red);
    55.     g2d.drawString(city,35,115);
    56.     }
    57. public void timeElapsed()
    58. {
    59. calendar.setTime(new Date());
    60. seconds=calendar.get(Calendar.HOUR)*60*60
    61.           +calendar.get(Calendar.MINUTE)*60
    62.           +calendar.get(Calendar.SECOND);
    63.   }
    64. public void run(){
    65. try{
    66.   while(true){
    67.   t.sleep(300);
    68.   timeElapsed();
    69.   repaint();
    70.   }
    71. }
    72.    catch(InterruptedException e){}
    73. }
    74. }
    复制代码

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/10/235700859.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 08:02 , Processed in 0.336734 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表