服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个经典的java applet程序(二)


  接着上面的部分,下面是applet主程序部分:


public class myclock extends applet implements runnable
{
static final int background=0; //背景图片的序号,供数组使用
static final int logo=1; //logo图片的序号,供数组使用
static final string javex="bear"; //表盘上显示的文字
static final double minsec=0.104719755; //分针和秒针在表盘上的刻度(60个)间的弧度
static final double hour=0.523598776; //时针在表盘上的刻度(24个)间的弧度

thread clockthread = null; //使用多线程机制,用另一个线程不断显示图片

//提供的默认参数,如果html文件里面没有给参数就使用
int width = 100;
int height = 100;
color bgcolor = new color(0,0,0);
color facecolor = new color(0,0,0);
color sweepcolor = new color(255,0,0);
color minutecolor = new color (192,192,192);
color hourcolor = new color (255,255,255);
color textcolor = new color (255,255,255);
color casecolor = new color (0,0,0);
color trimcolor = new color (192,192,192);
string logostring=null;

image images[] = new image[2]; //背景和logo的图片

boolean ispainted=false; //如果第一次载入时绘制背景及表盘,其他时候重绘则只绘制指针

//时钟圆心的位置
int x1,y1;

//最上面那个三角形的刻度图形的坐标
int xpoints[]=new int[3], ypoints[]=new int[3];

//保存当前时间,转换成(double)(hours + minutes/60)
hms cur_time;

//秒针、分针、时针
sweephand sweep;
hmhand minutehand,
hourhand;

//用于绘制的时、分、秒
double lasthour;
int lastminute,lastsecond;

//显示日期和表盘上的字母的字体
font font;

//图片显示使用了缓冲机制,offscrimage和offscrgc存放缓冲区内图片的信息
image offscrimage;
graphics offscrgc;

//用于测试背景图片和logo图片
mediatracker tracker;


int mindimension; // 如果背景区域不是正方形的话,保证时钟在中间显示
int originx; // 时钟图形所在正方形区域的左上角x坐标
int originy; // 时钟图形所在正方形区域的左上角y坐标

double tzdifference=0; //时区间的差,向西为负数,向东为正数

boolean localonly=false; //是否只使用本地时间,如果为false则可以根据传入的时区显示该时区时间


//保存参数的类型说明
public string[][] getparameterinfo()
{
string[][] info = {
{"width", "int", "applet的长度,以象素为单位"},
{"height", "int", "applet的宽度,以象素为单位"},
{"bgcolor", "string", "背景颜色,e.g ff0000"},
{"facecolor", "string", "表盘颜色"},
{"sweepcolor", "string", "秒针颜色"},
{"minutecolor", "string", "分针颜色"},
{"hourcolor", "string", "时针颜色"},
{"textcolor", "string", "文本颜色"},
{"casecolor", "string", "框内颜色"},
{"trimcolor", "string", "空白区颜色"},
{"bgimageurl", "string", "背景图片地址"},
{"logostring", "string", "logo字符"},
{"logoimageurl","string", "logo图片地址"},
{"timezone", "real", "时区间的差"},
{"localonly", "int", "是否考虑到时区差别"}
};
return info;
}

//显示信息
public string getappletinfo()
{
return "版权所有,copy必究,保护正版,人人有责";
}

void showurlerror(exception e)
{
string errormsg = "url错误:"+e;
showstatus(errormsg);
system.err.println(errormsg);
}

//相当于把时钟变成100×100的大小,percent即相对坐标
private int size(int percent)
{
return (int)((double)percent/100.0 * (double)mindimension);
}

public void init()
{
url imagesurl[] = new url[2];
string szimagesurl[] = new string[2];
tracker = new mediatracker(this);

//得到html页面提供的参数,并把它转换相应的格式
string paramstring = getparameter( "width" );
if( paramstring != null )
width = integer.valueof(paramstring).intvalue();

paramstring = getparameter( "height" );
if( paramstring != null )
height = integer.valueof(paramstring).intvalue();

paramstring = getparameter( "timezone" );
if( paramstring != null )
tzdifference = double.valueof(paramstring).doublevalue();

paramstring = getparameter( "localonly" );
if( paramstring != null && integer.valueof(paramstring).intvalue() != 0){
localonly=true;
tzdifference=0.;
}

paramstring = getparameter( "bgcolor");
if( paramstring != null )
bgcolor=parsecolorstring(paramstring);

paramstring = getparameter( "facecolor");
if( paramstring != null )
facecolor=parsecolorstring(paramstring);

paramstring = getparameter( "sweepcolor");
if( paramstring != null )
sweepcolor=parsecolorstring(paramstring);

paramstring = getparameter( "minutecolor");
if( paramstring != null )
minutecolor=parsecolorstring(paramstring);

paramstring = getparameter( "hourcolor");
if( paramstring != null )
hourcolor=parsecolorstring(paramstring);

paramstring = getparameter( "textcolor");
if( paramstring != null )
textcolor=parsecolorstring(paramstring);

paramstring = getparameter( "casecolor");
if( paramstring != null )
casecolor=parsecolorstring(paramstring);

paramstring = getparameter( "trimcolor");
if( paramstring != null )
trimcolor=parsecolorstring(paramstring);

logostring = getparameter( "logostring");
if( logostring == null )
logostring=javex;
else if(logostring.length() > 8)
logostring= logostring.substring(0,8); //限制8个字母,否则显示不下!

//szimagesurl数组根据html传入参数存放图片的文件名
szimagesurl[background] = getparameter("bgimageurl");
szimagesurl[logo] = getparameter("logoimageurl");

//测试图片
for(int i=0; i<2; i++){
if(szimagesurl[i] != null){
//根据codebase参数与image文件名得到image的路径,测试是否存在,如果不存在就不用图片
try{
imagesurl[i]=new url(getcodebase(),szimage

扫描关注微信公众号