?? clock.java
字號(hào):
/*
* 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;//用來(lái)顯示時(shí)間的子進(jìn)程
private int lastxs,lastys,lastxm,lastym,lastxh,lastyh;//用來(lái)表示鐘上各針的位置
private SimpleDateFormat formatter;//用來(lái)格式化顯示的時(shí)間
private String lastdate;//用來(lái)顯示時(shí)間的字符串
private Font clockFaceFont;//字體對(duì)象
private Date currentDate;//時(shí)間對(duì)象
private Color handColor;//表示種臂的顏色的顏色對(duì)象
private Color numberColor;//秒鐘和時(shí)間顯示的顏色
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;
}
//設(shè)置時(shí)鐘各針的位置
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);
//畫(huà)面更新的時(shí)間和鐘面
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");
//描繪時(shí)鐘的鐘環(huán)和刻度
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);
/*用來(lái)描繪時(shí)間和鐘上的各針
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;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -