如何用JAVA编程实现实时动态运行模拟时钟?

导入Java . awt . *;

导入Java . applet . applet;

导入Java . util . calendar;

导入Java . text . simple date format;

导入Java . util . date;

公共类时钟applet扩展applet实现runnable//Applet支持线程。

{

私有线程athread//线程

private simple date format sdate format;//日期格式

公共void init()

{

this . set background(color . white);//背景色设置为白色

this.athread = null

}

公共空白油漆(图形g)

{

这个。sdate格式=新的简单日期格式(“mm分,ss秒当hh”);

g . drawstring(this . sdate format . format(new Date()),25,131);

calendar right now = calendar . getinstance();

int second = rightnow.get(日历。第二);

int minute = right now . get(Calendar。分钟);

int hour = rightnow.get(日历。小时);

//半径

int R_H = 20,R_M = 4,R _ S = 4;

//时针的坐标

//x = = = = =(9-3)[0-6](3-9)[6-0]

//y = = = = =(12-6)[0-6](6-12)[6-0]

int H _ x;

int H _ y;

//x

if(小时== 0)

{

小时= 12;

}

如果(小时& gt= 3 & amp& amp小时& lt= 9 )

{

H_x = R_H*Math.abs(小时-9);

}

其他

{

如果(小时& gt9)

{

H_x = R_H*Math.abs(小时-9);

}

其他

{

H_x = R_H*Math.abs(小时+3);

}

}

//y

如果(小时& gt= 6 & amp& amp小时& lt= 12 )

{

H_y = R_H*Math.abs(小时-12);

}

其他

{

H _ y = R _ H *小时;

}

//分针的坐标

int M _ x;

int M _ y;

if(分钟== 0)

{

分钟= 60;

}

if(分钟& gt= 15。& amp分钟& lt= 45 )

{

M_x = R_M*Math.abs(分钟-45);

}

其他

{

if(分钟& gt45)

{

M_x = R_M*Math.abs(分钟-45);

}

其他

{

M_x = R_M*Math.abs(分钟+15);

}

}

//y

if(分钟& gt= 30 & amp& amp分钟& lt60 )

{

M_y = R_M*Math.abs(分钟-60);

}

其他

{

M _ y = R _ M *分钟;

}

//秒针的坐标

int S _ x;

int S _ y;

if(秒== 0)

{

秒= 60;

}

if(秒& gt= 15。& amp第二& lt= 45 )

{

S_x = R_S*Math.abs(秒-45);

}

其他

{

if(秒& gt45)

{

S_x = R_S*Math.abs(秒-45);

}

其他

{

S_x = R_S*Math.abs(秒+15);

}

}

//y

if(秒& gt= 30 & amp& amp第二& lt= 60 )

{

S_y = R_S*Math.abs(秒-60);

}

其他

{

S _ y = R _ S *秒;

}

// g.drawString(String.valueOf(秒),25,50);

// g.drawString(String.valueOf(分钟),25,60);

//g . drawstring(string . value of(hour),25,70);

//g . drawstring(string . value of(H _ x),25,80);

//g . drawstring(string . value of(H _ y),25,90);

g.drawOval(0,0,120,120);//距离差为10像素。

g . set color(color . dark gray);

g .拉绳(" 9 ",5,65);

g .拉带(" 3 ",110,65);

g .拉绳(" 12 ",55,15);

g .抽绳(" 6 ",55,115);

g .拉绳(" 1 ",80,20);

g .拉绳(" 2 ",100,40);

g .拉绳(" 4 ",100,90);

g .抽绳(" 5 ",80,110);

g .拉绳(" 7 ",30,110);

g .拉带(" 8 ",10,90);

g .拉绳(" 10 ",10,40);

g .拉绳(" 11 ",30,20);

g . set color(color . red);

g.drawLine(60,60,H_x,H _ y);//前一点表示起点,另一点表示终点。

g . set color(color . blue);

g.drawLine(60,60,M_x,M _ y);

g . set color(color . yellow);

g.drawLine(60,60,S_x,S _ y);

}

公共void开始()

{

if(athread == null)

{

athread =新线程(this);

athread . start();

}

}

公共无效站点()

{

如果(athread!=空)

{

athread . interrupt();

athread = null

}

}

公共无效运行()

{

while(athread!=空)

{

repaint();

尝试

{

athread . sleep(1000);

}

catch(中断异常e)

{

}

}

}

}