TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|

- import java.awt.*;
- import java.awt.event.*;
- import java.util.*;
- public class TimerTest
- {
- public static void main (String[] args)
- { TimerTestFrame f= new TimerTestFrame("世界时钟");
- }
- }
- class TimerTestFrame extends Frame
- {
- public TimerTestFrame(String s)
- {
- super(s);
- addWindowListener(new
- WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- dispose();
- System.exit(0);
- }
- });
- setLayout(new GridLayout(2,6));
复制代码
-
- ClockCanvas clk1=new ClockCanvas("北京","GMT+8"); //创建时钟
- ClockCanvas clk2=new ClockCanvas("巴黎","GMT+2");
- ClockCanvas clk3=new ClockCanvas("华盛顿","GMT-4");
- ClockCanvas clk4=new ClockCanvas("洛衫矶","GMT-7");
- ClockCanvas clk5=new ClockCanvas("伦敦","GMT+1");
- ClockCanvas clk6=new ClockCanvas("芝加哥","GMT-5");
- add(clk1);add(clk2);add(clk3);
- add(clk4);add(clk5);add(clk6);
- setSize(500,350); //设置框架宽高
- setVisible(true);
- }
- }
- class ClockCanvas extends Canvas implements Runnable
- {
- private int seconds=0;
- private String city;
- private GregorianCalendar calendar;
- Thread t;
- public ClockCanvas(String c,String tz)
- {
- city=c;
- calendar=new GregorianCalendar(TimeZone.getTimeZone(tz));
- t=new Thread(this);
- t.start();
- setSize(125,125); //设置画布大小
- setBackground(Color.black);
- }
- //重写父类的方法绘制时钟图形
- public void paint(Graphics g)
- {
- Graphics2D g2d=(Graphics2D)g;
- BasicStroke bstroke=new BasicStroke(2.0f);
- g2d.setStroke(bstroke);
- g2d.setColor(Color.green);
- g2d.drawOval(0,0,100,100);
- bstroke=new BasicStroke(5.0f);
- g2d.setStroke(bstroke);
- g2d.drawLine(50,0,50,5);
- g2d.drawLine(0,50,5,50);
- g2d.drawLine(50,95,50,98);
- g2d.drawLine(95,50,98,50);
- 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);
- bstroke=new BasicStroke(5.0f);
- g2d.setStroke(bstroke);
- g2d.drawLine(50,50,50+(int)(30*Math.cos(hourAngle)),50+(int)(30*Math.sin(hourAngle)));
- bstroke=new BasicStroke(3.0f);
- g2d.setStroke(bstroke);
- g2d.drawLine(50,50,50+(int)(40*Math.cos(minuteAngle)),50+(int)(40*Math.sin(minuteAngle)));
- bstroke=new BasicStroke(1.0f);
- g2d.setStroke(bstroke);
- g2d.drawLine(50,50,50+(int)(45*Math.cos(secondAngle)),50+(int)(45*Math.sin(secondAngle)));
- g2d.setColor(Color.red);
- g2d.drawString(city,35,115);
- }
- public void timeElapsed()
- {
- calendar.setTime(new Date());
- seconds=calendar.get(Calendar.HOUR)*60*60
- +calendar.get(Calendar.MINUTE)*60
- +calendar.get(Calendar.SECOND);
- }
- public void run(){
- try{
- while(true){
- t.sleep(300);
- timeElapsed();
- repaint();
- }
- }
- catch(InterruptedException e){}
- }
- }
复制代码
源码下载:http://file.javaxxz.com/2014/11/10/235700859.zip |
|