接着上面的部分,下面是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", "秒针颜色"},