|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?程序<P>转眼间一年又要过了,本人又老了一岁,忧郁啊。趁着另有几分钟才新年,从速再发几篇文章,给已往的一年添点工具。
该程序是从网上发明的,是一个复杂的时钟显现程序。
代码特征:
时钟代码供应了各类接口,能够在HTML文件中设置,变更出多姿多彩的时钟模子,
参数申明见代码内info数组
时钟的绘制接纳双缓冲图形处置机制,即先在缓冲区内绘制图形,再把图形显现到网页上能够无效的避免闪灼。
别的时钟的不休绘制是经由过程一个线程不休读取体系工夫,假如工夫有变更即绘制。接纳一个线程绘制,一个线程处置网页对照切合APPLET设置标准。
代码部分:
importjava.awt.*;
importjava.applet.*;
importjava.util.*;
importjava.net.*;
classHmsextendsDate
{
publicHms(doublelocalOffset){//假如HTML文件中设置了时区,则把工夫设为外地时区工夫
super();
longtzOffset=getTimezoneOffset()*60L*1000L;
localOffset*=3600000.0;
setTime(getTime()+tzOffset+(long)localOffset);
}
publicHms(){//假如没有设置时区,则就利用外地的工夫
super();
}
publicdoubleget_hours()//工夫换算,把如5:30如许的工夫换算成5.5
{
return(double)super.getHours()+(double)getMinutes()/60.0;
}
}
abstractclassClockHand//笼统类,供应时针、分针、秒针类利用
{
protectedintbaseX[],baseY[];
protectedinttransX[],transY[];
protectedintnumberOfPoints;
publicClockHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
baseX=newint[points];baseY=newint[points];
transX=newint[points];transY=newint[points];
initiallizePoints(originX,originY,length,thickness);
numberOfPoints=points;
}
abstractprotectedvoidinitiallizePoints(intoriginX,
intoriginY,
intlength,
intthickness);
abstractpublicvoiddraw(Colorcolor,doubleangle,Graphicsg);
protectedvoidtransform(doubleangle)//经由过程角度盘算出时针、分针、秒针的绘制地位
{
for(inti=0;i<numberOfPoints;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]);
}
}
}
//秒针利用的类
classSweepHandextendsClockHand
{
publicSweepHand(intoriginX,intoriginY,intlength,intpoints)
{
super(originX,originY,length,0,points);
}
protectedvoidinitiallizePoints(intoriginX,intoriginY,intlength,intunused)//初始化点
{
baseX[0]=originX;baseY[0]=originY;
baseX[1]=originX;baseY[1]=originY-length/5;
baseX[2]=originX;baseY[2]=originY+length;
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制秒针,为线段
{
transform(angle);
g.setColor(color);
g.drawLine(transX[1],transY[1],transX[2],transY[2]);
}
}
classHmHandextendsClockHand
{
publicHmHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
super(originX,originY,length,thickness,points);
}
protectedvoidinitiallizePoints(intoriginX,//初始化点
intoriginY,
intlength,
intthickness)
{
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];
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制时针分针,为多边形
{
transform(angle);
g.setColor(color);
g.fillPolygon(transX,transY,numberOfPoints);
}
}
Hms类是举行工夫换算的类
ClockHand是绘制指针的笼统基类,同时供应将角度转换为坐标的办法
SweepHand是秒针绘制利用的类
HmHand是时针分针绘制利用的类
主函数看后续部分
转眼间一年又要过了,本人又老了一岁,忧郁啊。趁着另有几分钟才新年,从速再发几篇文章,给已往的一年添点工具。
该程序是从网上发明的,是一个复杂的时钟显现程序。
代码特征:
时钟代码供应了各类接口,能够在HTML文件中设置,变更出多姿多彩的时钟模子,
参数申明见代码内info数组
时钟的绘制接纳双缓冲图形处置机制,即先在缓冲区内绘制图形,再把图形显现到网页上能够无效的避免闪灼。
别的时钟的不休绘制是经由过程一个线程不休读取体系工夫,假如工夫有变更即绘制。接纳一个线程绘制,一个线程处置网页对照切合APPLET设置标准。
代码部分:
importjava.awt.*;
importjava.applet.*;
importjava.util.*;
importjava.net.*;
classHmsextendsDate
{
publicHms(doublelocalOffset){//假如HTML文件中设置了时区,则把工夫设为外地时区工夫
super();
longtzOffset=getTimezoneOffset()*60L*1000L;
localOffset*=3600000.0;
setTime(getTime()+tzOffset+(long)localOffset);
}
publicHms(){//假如没有设置时区,则就利用外地的工夫
super();
}
publicdoubleget_hours()//工夫换算,把如5:30如许的工夫换算成5.5
{
return(double)super.getHours()+(double)getMinutes()/60.0;
}
}
abstractclassClockHand//笼统类,供应时针、分针、秒针类利用
{
protectedintbaseX[],baseY[];
protectedinttransX[],transY[];
protectedintnumberOfPoints;
publicClockHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
baseX=newint[points];baseY=newint[points];
transX=newint[points];transY=newint[points];
initiallizePoints(originX,originY,length,thickness);
numberOfPoints=points;
}
abstractprotectedvoidinitiallizePoints(intoriginX,
intoriginY,
intlength,
intthickness);
abstractpublicvoiddraw(Colorcolor,doubleangle,Graphicsg);
protectedvoidtransform(doubleangle)//经由过程角度盘算出时针、分针、秒针的绘制地位
{
for(inti=0;i<numberOfPoints;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]);
}
}
}
//秒针利用的类
classSweepHandextendsClockHand
{
publicSweepHand(intoriginX,intoriginY,intlength,intpoints)
{
super(originX,originY,length,0,points);
}
protectedvoidinitiallizePoints(intoriginX,intoriginY,intlength,intunused)//初始化点
{
baseX[0]=originX;baseY[0]=originY;
baseX[1]=originX;baseY[1]=originY-length/5;
baseX[2]=originX;baseY[2]=originY+length;
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制秒针,为线段
{
transform(angle);
g.setColor(color);
g.drawLine(transX[1],transY[1],transX[2],transY[2]);
}
}
classHmHandextendsClockHand
{
publicHmHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
super(originX,originY,length,thickness,points);
}
protectedvoidinitiallizePoints(intoriginX,//初始化点
intoriginY,
intlength,
intthickness)
{
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];
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制时针分针,为多边形
{
transform(angle);
g.setColor(color);
g.fillPolygon(transX,transY,numberOfPoints);
}
}
Hms类是举行工夫换算的类
ClockHand是绘制指针的笼统基类,同时供应将角度转换为坐标的办法
SweepHand是秒针绘制利用的类
HmHand是时针分针绘制利用的类
主函数看后续部分
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。 |
|