当前位置:编程学习 > JSP >>

一个经典的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 )
            tzDiffe

上一个:使用EJB3.O简化EJB开发(一)
下一个:J2EE编程起步(二)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,