一个经典的JAVA APPLET时钟程序(一)
2008-02-23 09:43:19来源:互联网 阅读 ()
转眼间一年又要过了,自己又老了一岁,郁闷啊。趁着还有几分钟才新年,赶快再发几篇文章,给过去的一年添点东西。 该程序是从网上发现的,是一个简单的时钟显示程序。 代码特色: 时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到网页上可以有效的防止闪烁。 另外时钟的不断绘制是通过一个线程不断读取系统时间,如果时间有变化即绘制。采用一个线程绘制,一个线程处理网页比较符合Applet设置规范。 代码部分: class Hms extends Date public Hms(){ //如果没有设置时区,则就使用当地的时间 public double get_hours() //时间换算,把如5:30这样的时间换算成5.5 abstract class ClockHand //抽象类,提供时针、分针、秒针类使用 public ClockHand(int originX, int originY, int length,int thickness,int points){ abstract protected void initiallizePoints( int originX, abstract public void draw(Color color, double angle, Graphics g); protected void transform(double angle) //通过角度计算出时针、分针、秒针的绘制位置 transY[i]=(int)( (baseX[0]-baseX[i]) * Math.sin(angle) //秒针使用的类 protected void initiallizePoints(int originX,int originY, int length, int unused) //初始化点 public void draw(Color color, double angle, Graphics g) //绘制秒针,为线段 class HmHand extends ClockHand protected void initiallizePoints( int originX, //初始化点 baseX[1]=baseX[0]-thickness/2; baseX[2]=baseX[1]; baseX[3]=baseX[0]; baseX[4]=baseX[0] thickness/2; baseX[5]=baseX[4]; public void draw(Color color,double angle, Graphics g) //绘制时针分针,为多边形 Hms类是进行时间换算的类 主函数看后续部分
时钟代码提供了各种接口,可以在HTML文件中设置,变化出多姿多彩的时钟模型,
参数说明见代码内info数组
import Java.awt.*;
import java.applet.*;
import java.util.*;
import java.net.*;
{
public Hms(double localOffset){ //如果HTML文件中设置了时区,则把时间设为当地时区时间
super();
long tzOffset=getTimezoneOffset()*60L*1000L;
localOffset *= 3600000.0;
setTime(getTime() tzOffset (long)localOffset);
}
super();
}
{
return (double)super.getHours() (double)getMinutes()/60.0;
}
}
{
protected int baseX[], baseY[];
protected int transX[],transY[];
protected int numberOfPoints;
baseX= new int[points]; baseY=new int[points];
transX= new int[points]; transY=new int[points];
initiallizePoints(originX,originY,length,thickness);
numberOfPoints=points;
}
int originY,
int length,
int thickness);
{
for(int i=0;i<numberOfPoints;i ){
transX[i]=(int)( (baseX[0]-baseX[i]) * Math.cos(angle) -
(baseY[0]-baseY[i]) * Math.sin(angle)
baseX[0]);
(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);
}
{
baseX[0]=originX; baseY[0]=originY;
baseX[1]=originX; baseY[1]=originY-length/5;
baseX[2]=originX; baseY[2]=originY length;
}
{
transform(angle);
g.setColor(color);
g.drawLine(transX[1],transY[1],transX[2],transY[2]);
}
}
{
public HmHand(int originX,int originY, int length,int thickness, int points){
super(originX,originY,length,thickness,points);
}
int originY,
int length,
int thickness)
{
baseX[0]=originX;
baseY[0]=originY;
baseY[1]=baseY[0] thickness/2;
baseY[2]=baseY[0] length- thickness;
baseY[3]=baseY[0] length;
baseY[4]=baseY[2];
baseY[5]=baseY[1];
}
{
transform(angle);
g.setColor(color);
g.fillPolygon(transX,transY,numberOfPoints);
}
}
ClockHand是绘制指针的抽象基类,同时提供将角度转换为坐标的方法
SweepHand是秒针绘制使用的类
HmHand是时针分针绘制使用的类
转眼间一年又要过了,自己又老了一岁,郁闷啊。趁着还有几分钟才新年,赶快再发几篇文章,给过去的一年添点东西。
该程序是从网上发现的,是一个简单的时钟显示程序。
代码特色:
时钟代码提供了各种接口,可以在HTML文件中设置,变化出多姿多彩的时钟模型,
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Jsp 好的入门文章共赏
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash