📄 显示本地时间.java
字号:
package 多线程;
import java.awt.*;
import java.util.*;
import java.applet.*;
public class 显示本地时间 extends Applet implements Runnable
{
Thread 时针=null,分针=null,秒针=null;
int hour_a,hour_b,minute_a,minute_b,second_a,second_b;
int hour=0,minute=0,second=0;
Graphics g_second=null,g_minute=null,g_hour=null;
double point_x[]=new double[61],
point_y[]=new double[61];
double scaled_x[]=new double[61],
scaled_y[]=new double[61];
int start_count=0;
public void init()
{
g_hour=this.getGraphics();
g_hour.setColor(Color.cyan);
g_second=this.getGraphics();
g_second.setColor(Color.red);
g_minute=this.getGraphics();
g_minute.setColor(Color.blue);
g_hour.translate(200,200);
g_minute.translate(200,200);
g_second.translate(200,200);
point_x[0]=0;point_y[0]=-120;
scaled_x[0]=0;scaled_y[0]=-140;
double jiaodu=6*Math.PI/180;
for(int i=0;i<60;i++)
{
point_x[i+1]=point_x[i]*Math.cos(jiaodu)-point_y[i]*Math.sin(jiaodu);
point_y[i+1]=point_y[i]*Math.cos(jiaodu)+point_x[i]*Math.sin(jiaodu);
}
point_x[60]=0;
point_y[60]=-120;
for(int i=0;i<60;i++)
{
scaled_x[i+1]=scaled_x[i]*Math.cos(jiaodu)-scaled_y[i]*Math.sin(jiaodu);
scaled_y[i+1]=scaled_y[i]*Math.cos(jiaodu)+scaled_x[i]*Math.sin(jiaodu);
}
scaled_x[60]=0;
scaled_y[60]=-140;
}
public void start()
{
if(start_count>=1)
{
秒针.interrupt();
分针.interrupt();
时针.interrupt();
}
时针=new Thread(this);
分针=new Thread(this);
秒针=new Thread(this);
秒针.start();
分针.start();
时针.start();
start_count++;
if(start_count>=2)
start_count=1;
}
public void stop()
{
秒针.interrupt();
分针.interrupt();
时针.interrupt();
}
public void paint(Graphics g)
{
this.start();
g.drawOval(50,50, 300,300);
g.translate(200,200);
for(int i=0;i<=60;i++)
{
if(i%5==0)
{
g.setColor(Color.red);
g.fillOval((int)scaled_x[i],(int)scaled_y[i],8,8);
}
else
g.fillOval((int)scaled_x[i],(int)scaled_y[i],3,3);
}
}
public void run()
{
Date date=new Date();
String s=date.toString();
hour=Integer.parseInt(s.substring(11,13));
minute=Integer.parseInt(s.substring(14,16));
second=Integer.parseInt(s.substring(17,19));
if(Thread.currentThread()==秒针)
{
second_a=(int)point_x[second];
second_b=(int)point_y[second];
g_second.drawLine(0,0,second_a,second_b);
g_second.drawString("秒",second_a,second_b);
int i=second;
while(true)
{
try
{秒针.sleep(1000);
Color c=this.getBackground();
g_second.setColor(c);
g_second.drawLine(0,0,second_a,second_b);
g_second.drawString("秒",second_a,second_b);
if((minute_a==second_a)&&(minute_b==second_b))
{
g_minute.drawLine(0,0,second_a,second_b);
g_minute.drawString("分",second_a,second_b);
}
if((hour_a==second_a)&&(hour_b==second_b))
{
g_hour.drawLine(0,0,second_a,second_b);
g_hour.drawString("时",second_a,second_b);
}
}
catch(InterruptedException e)
{
Color c=this.getBackground();
g_second.setColor(c);
g_second.drawLine(0,0,second_a,second_b);
g_second.drawString("秒",second_a,second_b);
return;
}
second_a=(int)point_x[(i+1)%60];
second_b=(int)point_y[(i+1)%60];
g_second.setColor(Color.red);
g_second.drawLine(0,0,second_a ,second_b);
g_second.drawString("秒",second_a,second_b);
i++;
}
}
if(Thread.currentThread()==分针)
{
minute_a=(int)point_x[minute];
minute_b=(int)point_y[minute];
g_minute.drawLine(0,0,minute_a,minute_b);
g_minute.drawString("分",minute_a,minute_b);
int i=minute;
while(true)
{
try
{分针.sleep(1000*60-second*1000);
second=0;
Color c=this.getBackground();
g_minute.setColor(c);
g_minute.drawLine(0,0,minute_a,minute_b);
g_minute.drawString("分",minute_a,minute_b);
if((hour_a==minute_a)&&(hour_b==minute_b))
{
g_hour.drawLine(0,0,hour_a,hour_b);
g_hour.drawString("时",hour_a,hour_b);
}
}
catch(InterruptedException e)
{
return;
}
minute_a=(int)point_x[(i+1)%60];
minute_b=(int)point_y[(i+1)%60];
g_minute.setColor(Color.blue);
g_minute.drawLine(0,0,minute_a ,minute_b);
g_minute.drawString("分",minute_a,minute_b);
i++;
second=0;
}
}
if(Thread.currentThread()==时针)
{
int h=hour%12;
hour_a=(int)point_x[h*5+minute/12];
hour_b=(int)point_y[h*5+minute/12];
int i=h*5+minute/12;
g_hour.drawLine(0,0,hour_a,hour_b);
g_hour.drawString("时",hour_a,hour_b);
while(true)
{
try
{时针.sleep(1000*60*12-1000*60*(minute%12)-second*1000);
minute=0;
Color c=this.getBackground();
g_hour.setColor(c);
g_hour.drawLine(0,0,hour_a,hour_b);
g_hour.drawString("时",hour_a,hour_b);
}
catch(InterruptedException e)
{
return;
}
hour_a=(int)point_x[(i+1)%60];
hour_b=(int)point_y[(i+1)%60];
g_hour.setColor(Color.cyan);
g_hour.drawLine(0,0,hour_a ,hour_b);
g_hour.drawString("时",hour_a,hour_b);
i++;
minute=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -