📄 clock.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 + -