java时钟代码_一个经典的JAVA APPLET时钟程序(一)

转眼间一年又要过了,自己又老了一岁,郁闷啊。趁着还有几分钟才新年,赶快再发几篇文章,给过去的一年添点东西。

该程序是从网上发现的,是一个简单的时钟显示程序。

代码特色:

时钟代码提供了各种接口,可以在html文件中设置,变化出多姿多彩的时钟模型,

参数说明见代码内info数组

时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到网页上可以有效的防止闪烁。

另外时钟的不断绘制是通过一个线程不断读取系统时间,如果时间有变化即绘制。采用一个线程绘制,一个线程处理网页比较符合APPLET设置规范。

代码部分:

http://www.gaodaima.com/40283.html一个经典的java APPLET时钟程序(一)

import java.awt.*;

import java.applet.*;

import java.util.*;

import java.net.*;

class Hms extends Date

{

public Hms(double localOffset){ //如果HTML文件中设置了时区,则把时间设为当地时区时间

super();

long tzOffset=getTimezoneOffset()*60L*1000L;

localOffset *= 3600000.0;

setTime(getTime() + tzOffset + (long)localOffset);

}

public Hms(){ //如果没有设置时区,则就使用当地的时间

super();

}

public double get_hours() //时间换算,把如5:30这样的时间换算成5.5

{

return (double)super.getHours()+(double)getMinutes()/60.0;

}

}

abstract class ClockHand //抽象类,提供时针、分针、秒针类使用

{

protected int baseX[], baseY[];

protected int transX[],transY[];

protected int numberOfPoints;

public ClockHand(int originX, int originY, int length,int thickness,int points){

baseX= new int[points]; baseY=new int[points];

transX= new int[points]; transY=new int[points];

initiallizePoints(originX,originY,length,thickness);

numberOfPoints=points;

}

abstract protected void initiallizePoints(  int originX,

int originY,

int length,

int thickness);

abstract public void draw(Color color, double angle, Graphics g);

protected void transform(double angle) //通过角度计算出时针、分针、秒针的绘制位置

{

for(int i=0;i

transX[i]=(int)(    (baseX[0]-baseX[i]) * Math.cos(angle) -

(baseY[0]-baseY[i]) * Math.sin(angle) +

baseX[0]);

transY[i]=(int)(    (baseX[0]-baseX[i]) * Math.sin(angle) +

(baseY[0]-baseY[i]) * Math.cos(angle) +

baseY[0]);

}

}

}

//秒针使用的类

class SweepHand extends ClockHand

{

public SweepHand(int originX,int originY, int length, int points)

{

super(originX,originY,length,0,points);

}

protected void initiallizePoints(int originX,int originY, int length, int unused) //初始化点

{

baseX[0]=originX; baseY[0]=originY;

baseX[1]=originX; baseY[1]=originY-length/5;

baseX[2]=originX; baseY[2]=originY+length;

}

public void draw(Color color, double angle, Graphics g) //绘制秒针,为线段

{

transform(angle);

g.setColor(color);

g.drawLine(transX[1],transY[1],transX[2],transY[2]);

}

}

class HmHand extends ClockHand

{

public HmHand(int originX,int originY, int length,int thickness, int points){

super(originX,originY,length,thickness,points);

}

protected void initiallizePoints(   int originX, //初始化点

int originY,

int length,

int thickness)

{

baseX[0]=originX;

baseY[0]=originY;

baseX[1]=baseX[0]-thickness/2;

baseY[1]=baseY[0]+thickness/2;

baseX[2]=baseX[1];

baseY[2]=baseY[0]+length- thickness;

baseX[3]=baseX[0];

baseY[3]=baseY[0]+length;

baseX[4]=baseX[0]+thickness/2;

baseY[4]=baseY[2];

baseX[5]=baseX[4];

baseY[5]=baseY[1];

}

public void draw(Color color,double angle, Graphics g) //绘制时针分针,为多边形

{

transform(angle);

g.setColor(color);

g.fillPolygon(transX,transY,numberOfPoints);

}

}

Hms类是进行时间换算的类

ClockHand是绘制指针的抽象基类,同时提供将角度转换为坐标的方法

SweepHand是秒针绘制使用的类

HmHand是时针分针绘制使用的类

主函数看后续部分

转眼间一年又要过了,自己又老了一岁,郁闷啊。趁着还有几分钟才新年,赶快再发几篇文章,给过去的一年添点东西。

该程序是从网上发现的,是一个简单的时钟显示程序。

代码特色:

时钟代码提供了各种接口,可以在HTML文件中设置,变化出多姿多彩的时钟模型,

参数说明见代码内info数组

时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到网页上可以有效的防止闪烁。

另外时钟的不断绘制是通过一个线程不断读取系统时间,如果时间有变化即绘制。采用一个线程绘制,一个线程处理网页比较符合APPLET设置规范。

代码部分:

import java.awt.*;

import java.applet.*;

import java.util.*;

import java.net.*;

class Hms extends Date

{

public Hms(double localOffset){ //如果HTML文件中设置了时区,则把时间设为当地时区时间

super();

long tzOffset=getTimezoneOffset()*60L*1000L;

localOffset *= 3600000.0;

setTime(getTime() + tzOffset + (long)localOffset);

}

public Hms(){ //如果没有设置时区,则就使用当地的时间

super();

}

public double get_hours() //时间换算,把如5:30这样的时间换算成5.5

{

return (double)super.getHours()+(double)getMinutes()/60.0;

}

}

abstract class ClockHand //抽象类,提供时针、分针、秒针类使用

{

protected int baseX[], baseY[];

protected int transX[],transY[];

protected int numberOfPoints;

public ClockHand(int originX, int originY, int length,int thickness,int points){

baseX= new int[points]; baseY=new int[points];

transX= new int[points]; transY=new int[points];

initiallizePoints(originX,originY,length,thickness);

numberOfPoints=points;

}

abstract protected void initiallizePoints(  int originX,

int originY,

int length,

int thickness);

abstract public void draw(Color color, double angle, Graphics g);

protected void transform(double angle) //通过角度计算出时针、分针、秒针的绘制位置

{

for(int i=0;i

transX[i]=(int)(    (baseX[0]-baseX[i]) * Math.cos(angle) -

(baseY[0]-baseY[i]) * Math.sin(angle) +

baseX[0]);

transY[i]=(int)(    (baseX[0]-baseX[i]) * Math.sin(angle) +

(baseY[0]-baseY[i]) * Math.cos(angle) +

baseY[0]);

}

}

}

//秒针使用的类

class SweepHand extends ClockHand

{

public SweepHand(int originX,int originY, int length, int points)

{

super(originX,originY,length,0,points);

}

protected void initiallizePoints(int originX,int originY, int length, int unused) //初始化点

{

baseX[0]=originX; baseY[0]=originY;

baseX[1]=originX; baseY[1]=originY-length/5;

baseX[2]=originX; baseY[2]=originY+length;

}

public void draw(Color color, double angle, Graphics g) //绘制秒针,为线段

{

transform(angle);

g.setColor(color);

g.drawLine(transX[1],transY[1],transX[2],transY[2]);

}

}

class HmHand extends ClockHand

{

public HmHand(int originX,int originY, int length,int thickness, int points){

super(originX,originY,length,thickness,points);

}

protected void initiallizePoints(   int originX, //初始化点

int originY,

int length,

int thickness)

{

baseX[0]=originX;

baseY[0]=originY;

baseX[1]=baseX[0]-thickness/2;

baseY[1]=baseY[0]+thickness/2;

baseX[2]=baseX[1];

baseY[2]=baseY[0]+length- thickness;

baseX[3]=baseX[0];

baseY[3]=baseY[0]+length;

baseX[4]=baseX[0]+thickness/2;

baseY[4]=baseY[2];

baseX[5]=baseX[4];

baseY[5]=baseY[1];

}

public void draw(Color color,double angle, Graphics g) //绘制时针分针,为多边形

{

transform(angle);

g.setColor(color);

g.fillPolygon(transX,transY,numberOfPoints);

}

}

Hms类是进行时间换算的类

ClockHand是绘制指针的抽象基类,同时提供将角度转换为坐标的方法

SweepHand是秒针绘制使用的类

HmHand是时针分针绘制使用的类

主函数看后续部分

欢迎大家阅读《一个经典的JAVA APPLET时钟程序(一)》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值