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

📄 clock.java

📁 java 时钟程序
💻 JAVA
字号:
/*
 * Created on 2004-8-22
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */

/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
public class Clock extends Applet implements Runnable{
	//public class Clock extends Applet {
	private volatile Thread timer;//用来显示时间的子进程
	private int lastxs,lastys,lastxm,lastym,lastxh,lastyh;//用来表示钟上各针的位置
	private SimpleDateFormat formatter;//用来格式化显示的时间
	private String lastdate;//用来显示时间的字符串
	private Font clockFaceFont;//字体对象
	private Date currentDate;//时间对象
	private Color handColor;//表示种臂的颜色的颜色对象
	private Color numberColor;//秒钟和时间显示的颜色
	private int xcenter=80,ycenter=55;//中央位置
	public void init(){
		int x,y;
		lastxs=lastys=lastxm=xcenter;
		lastym=lastxh=lastyh=ycenter;
		formatter=new SimpleDateFormat("EEE MMM dd hh:mm:ss:yyyy",Locale.getDefault());
		currentDate=new Date();
		lastdate=formatter.format(currentDate);
		clockFaceFont=new Font("Serif",Font.PLAIN,14);
		handColor=Color.blue;
		numberColor=Color.DARK_GRAY;
		try{
			setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));
		}catch (NullPointerException e){
		}catch (NumberFormatException e){
		}
		try{
			handColor=new Color(Integer.parseInt(getParameter("fgcolor1"),16));
		}catch (NullPointerException e){
		}catch (NumberFormatException e){
			System.out.println("f");
		}
		try{
			numberColor=new Color(Integer.parseInt(getParameter("fgcolor2"),16));
		}catch(NullPointerException e){
		}catch(NumberFormatException e){
		}
		resize(300,300);
	}

	public void update(Graphics g){
		
		int xh,yh,xm,ym,xs,ys;
		int s=0,m=0,h=0;
		String today;
		currentDate=new Date();
		System.out.println(Thread.currentThread().getName());
		formatter.applyPattern("s");
		try{
			s=Integer.parseInt(formatter.format(currentDate));
		}catch(NumberFormatException n){
			s=0;
		}
		formatter.applyPattern("m");
		try
		{
			m=Integer.parseInt(formatter.format(currentDate));
		}catch(NumberFormatException n){
			m=0;
		}
		formatter.applyPattern("h");
		try{
			h=Integer.parseInt(formatter.format(currentDate));
		}catch(NumberFormatException n){
					h=0;
		}
		//设置时钟各针的位置
		xs=(int)(Math.cos(s*Math.PI/30-Math.PI/2)*45+xcenter);
		ys=(int)(Math.sin(s*Math.PI/30-Math.PI/2)*45+ycenter);
		xm=(int)(Math.cos(m*Math.PI/30-Math.PI/2)*40+xcenter);
		ym=(int)(Math.sin(m*Math.PI/30-Math.PI/2)*40+ycenter);
		xh=(int)(Math.cos((h*30+m/2)*Math.PI/180-Math.PI/2)*30+xcenter);
		yh=(int)(Math.sin((h*30+m/2)*Math.PI/180-Math.PI/2)*30+ycenter);
		formatter.applyPattern("EEE MMM dd HH:mm:ss:yyyy");
		today=formatter.format(currentDate);
		g.setFont(clockFaceFont);
		g.setColor(getBackground());
		if(xs!=lastxs||ys!=lastys){
			g.drawLine(xcenter,ycenter,lastxs,lastys);
			g.drawString(lastdate,5,125);
		}
		if(xm!=lastxm||ym!=lastym){
			g.drawLine(xcenter,ycenter-1,lastxm,lastym);
			g.drawLine(xcenter-1,ycenter,lastxm,lastym);
		}
		if(xh!=lastxh||yh!=lastyh){
			g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
			g.drawLine(xcenter-1,ycenter,lastxh,lastyh);
		}
		g.setColor(numberColor);
		g.drawString(today,5,125);
		
		//画面更新的时间和钟面
		g.setColor(numberColor);
		g.drawString(today,5,125);
		g.drawLine(xcenter,ycenter,xs,ys);
		g.setColor(handColor);
		g.drawLine(xcenter,ycenter-1,xm,ym);
		g.drawLine(xcenter-1,ycenter,xm,ym);
		g.drawLine(xcenter,ycenter-1,xh,yh);
		g.drawLine(xcenter-1,ycenter,xh,yh);		
		lastxs=xs;lastys=ys;
		lastxm=xm;lastym=ym;
		lastxh=xh;lastyh=yh;
		lastdate=today;
		currentDate=null;
	}
	
	public void paint(Graphics g){
		//System.out.println("adaddd");
		//描绘时钟的钟环和刻度
		g.setFont(clockFaceFont);
		g.setColor(handColor);
		g.drawArc(xcenter-50,ycenter-50,100,100,0,360);
		g.setColor(numberColor);
		g.drawString("9",xcenter-45,ycenter+3);
		g.drawString("3",xcenter+40,ycenter+3);
		g.drawString("12",xcenter-5,ycenter-37);
		g.drawString("6",xcenter-3,ycenter+45);
		this.update(g);
		/*用来描绘时间和钟上的各针
		g.setColor(numberColor);
		g.drawString(lastdate,5,125);
		g.drawLine(xcenter,ycenter,lastxs,lastys);
		g.setColor(handColor);
		g.drawLine(xcenter,ycenter-1,lastxm,lastym);
		g.drawLine(xcenter-1,ycenter,lastxm,lastym);
		g.drawLine(xcenter-1,ycenter,lastxh,lastyh);
		g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
		*/
	}
	
	public void start(){
		timer=new Thread(this,"tt");
		timer.start();
	}
	
	public void stop(){
		timer=null;
	}
	
	public void run(){
		Thread me=Thread.currentThread();
		while(timer==me){
			try{
				Thread.sleep(1000);
			}catch (InterruptedException e){
		}
			System.out.println(Thread.currentThread().getName());
			repaint();
			
			
		}
	}
	
	public String[][] getParameterInfo(){
		String[][] info={
			{"bgcolor","hexadecimal RGB number","The background color.Default is the color of your browser."
			},
			{"fgcolor1","hexadecimail RGB number","The color of the hands and dial.Default is blue."
			},
			{"fgcolor2","hexadecimal RGB number","The color of the second and numbers.Default is dark gray."
			}
		};
		return info;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -