如何用JAVA编程实现实时动态运行模拟时钟?
导入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)
{
}
}
}
}