⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 显示本地时间.java

📁 一个显示本地时间的基于java多线程技术的小程序
💻 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 + -