public class Clock {
private int hour;
private int minute;
private int second;
public Clock(){
}
public Clock(int hrs,int min,int sec){
hour =hrs % 12;
minute = min;
second = sec;
}
void show (Graphics g,int cx,int cy,int rad){
int hourLenght = (int)(rad * 0.5);//時針的長度
int minuteLenght = (int)(rad * 0.6);//分針的長度
int secondLenght = (int)(rad * 0.9);//秒針的長度
double angle;//角度
//畫出鐘面
g.drawOval(cx-rad, cy - rad, rad * 2, rad * 2);
//畫出時針
angle = (double)(hour*60*60 + minute*60 + second)/43200.0*2.0*Math.PI;
drawNiddle(g,Color.blue, cx, cy, hourLenght,angle);
//畫分針
angle = (double)(minute*60 + second)/3600 * 2.0 * Math.PI;
drawNiddle(g,Color.blue, cx, cy, minuteLenght,angle);
// 畫秒針
angle = (double)(second)/60*2.0*Math.PI;
drawNiddle(g,Color.blue, cx, cy, secondLenght,angle);
}
private void drawNiddle(Graphics g ,Color c,int x,int y,int len,double angle){
int ex = (int)(x + len * Math.sin(angle));
int ey = (int)(y - len * Math.cos(angle));
g.setColor(c);
g.drawLine(x,y,ex,ey);
}
}
----------------ClockTest1.java---------------------
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class ClockTest1 extends JFrame{
/**
* @param args
*/
private Clock clock ;
private Date timeNow;
public ClockTest1(){
super("時鐘");
setSize(400,400);
setVisible(true);
}
public void paint(Graphics g){
super.paint(g);
timeNow = new Date();
clock = new Clock(timeNow.getHours(),timeNow.getMinutes(),timeNow.getSeconds());
clock.show(g,170,150,100);
try{
//for(int i =0 ; i <10 ; i += 10)
Thread.sleep(1000);
}catch(InterruptedException e){
}
repaint();
}
public static void main(String[] args) {
// TODO 自動生成方法存根
ClockTest1 appication = new ClockTest1();
appication.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}