/********************************************************************************** * * * Real time clock Applet * * ( RealClock.java ) * * Author : Seiichi Inoue * **********************************************************************************/ /********************** << Imported package class definition >> *******************/ import java.applet.Applet; /* Applet packages */ import java.awt.*; /* All of the Abstract Windowing Toolkit packages */ import java.util.Date; /* Date packages */ /************************** <<Oneself of class definition>> ***********************/ // Class name : RealClock // Access control : public( Access possibility even from which class ) // Extends class : Applet // Implements class: Runnable( Use of Thread is enabled ) public class RealClock extends Applet implements Runnable { /************************* << Class attribute of definition >> ********************/ Thread kicker = null; /* Thread(Initial value:suspension) */ Dimension d; /* Display range */ Image offs; /* Off screen */ Graphics grf; /* Drawing range */ String param; /* Parameter reading */ int red,green,blue; /* Clock letter color parameter */ Color color; /* Clock letter color */ int backred,backgreen,backblue; /* Background color parameter */ Color backcolor; /* Background color */ String fontname; /* Clock letter font parameter */ int fontsize; /* Clock letter size parameter */ Font font; /* Clock letter font */ int strHeight; /* The clock letter height */ int x; /* Display start position( Width ) */ int y_Point; /* Display position ( Height ) */ /***************** << Class of method (implementation procedure) >> ***************/ // /******** Initialization (init) method *********/ public void init() { d = size(); /* Set display screen size */ offs = createImage(d.width,d.height); /* Off scr area preparation */ grf = offs.getGraphics(); /* Graphics object extraction */ param = getParameter("font"); /* Input "font" reading */ fontname = (param != null)? /* Input determination */ param: "Dialog"; param = getParameter("fontsize"); /* Input "fontsize" reading */ fontsize = (param != null)? /* Input determination */ Integer.parseInt(param): 35; font = new Font(fontname,Font.BOLD,fontsize); /* Font setting */ strHeight = (getFontMetrics(font)).getLeading(); /* Vertical position */ strHeight -= (getFontMetrics(font)).getDescent(); strHeight += (getFontMetrics(font)).getAscent(); y_Point = (d.height + strHeight /* Set vertical position*/ - (getFontMetrics(font)).getDescent())/2; param = getParameter("x"); /* Display start position reading */ x = (param != null)? /* Input determination */ Integer.parseInt(param): 0; param = getParameter("backred"); /* Background red reading */ backred = (param != null)? /* Input determination */ Integer.parseInt(param): 255; param = getParameter("backgreen"); /* Background green reading */ backgreen = (param != null)? /* Input determination */ Integer.parseInt(param): 255; param = getParameter("backblue"); /* Background blue reading */ backblue = (param != null)? /* Input determination */ Integer.parseInt(param): 255; backcolor = new Color /* Background color assembly */ (backred,backgreen,backblue); param = getParameter("red"); /* Letter red reading */ red = (param != null)? /* Input determination */ Integer.parseInt(param): 255; param = getParameter("green"); /* Letter green reading */ green = (param != null)? /* Input determination */ Integer.parseInt(param): 0; param = getParameter("blue"); /* Letter blue reading */ blue = (param != null)? /* Input determination */ Integer.parseInt(param): 0; color = new Color(red,green,blue); /* Letter color assembly */ } /* End of initial method */ /************ Start (start) method *************/ public void start() { if ( kicker == null ) { /* Kicker is null? ( Suspension? )*/ kicker = new Thread(this); /* YES: kicker setting */ kicker.start(); /* Setting of start */ } repaint(); /* Drawing triggering */ } /* End of start method */ /*********** Repeatedly (run) method ***********/ public void run() { Thread.currentThread().setPriority(Thread.NORM_PRIORITY-3); while( kicker != null) { /* Repeat until kicker becomes null */ repaint(); /* Drawing triggering */ try { /* Interruption confirmation */ kicker.sleep(1000); /* Wait 1 seconds set */ } catch(InterruptedException e) {} /* Interruption processing */ } kicker = null; /* Repeate process completion set */ } /* End of run method */ /*********** Renewal (update) method ***********/ public void update(Graphics g) { /* Lost of screen flickering */ paint(g); /* Drawing */ } /* End of update method */ /*********** Drawing (paint) method ************/ public void paint(Graphics g) { grf.setColor(backcolor); /* Set display back color */ grf.fillRect(0,0,d.width,d.height); /* Display range is applied */ Date d = new Date(); /* Read clock information */ grf.setColor(color); /* Letter color setting */ grf.setFont(font); /* Font information setting */ grf.drawString(d.toString(),x,y_Point); /* Display information setting */ g.drawImage(offs,0,0,this); /* Drawing setting */ } /* End of paint method */ /************ Stop (stop) method ***************/ public void stop() { if( kicker != null ) { /* Kicker is not null?( action? ) */ kicker.stop(); /* Set kicker to suspension */ kicker = null; /* Set kicker suspension condition*/ } } /* End of stop method */ } /* End of class setting */ /********************************************************************************** * End of Real time clock Applet * **********************************************************************************/