泛舟湖上清波郎朗
文件: test.htm<applet code="Clock.class" width=400 height=300><param name=bgcolor value="ffffff"><param name=fgcolor1 value="ff0000"><param name=fgcolor2 value="ff00ff"></applet>文件test.htm结束文件: Clock.java/** @(#)Clock.java 1.14 04/07/26** Copyright (c) 2004 Sun Microsystems, Inc. All Rights Reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are met:** -Redistribution of source code must retain the above copyright notice, this* list of conditions and the following disclaimer.** -Redistribution in binary form must reproduce the above copyright notice,* this list of conditions and the following disclaimer in the documentation* and/or other materials provided with the distribution.** Neither the name of Sun Microsystems, Inc. or the names of contributors may* be used to endorse or promote products derived from this software without* specific prior written permission.** This software is provided "AS IS," without a warranty of any kind. ALL* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE* OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY* OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.** You acknowledge that this software is not designed, licensed or intended* for use in the design, construction, operation or maintenance of any* nuclear facility.*//** @(#)Clock.java 1.14 04/07/26*/import java.util.*;import java.awt.*;import java.applet.*;import java.text.*;/*** Time!** @author Rachel Gollub* @modified Daniel Peek replaced circle drawing calculation, few more changes*/public class Clock extends Applet implements Runnable {private volatile Thread timer; // The thread that displays clockprivate int lastxs, lastys, lastxm,lastym, lastxh, lastyh; // Dimensions used to draw handsprivate SimpleDateFormat formatter; // Formats the date displayedprivate String lastdate; // String to hold date displayedprivate Font clockFaceFont; // Font for number display on clockprivate Date currentDate; // Used to get date to displayprivate Color handColor; // Color of main hands and dialprivate Color numberColor; // Color of second hand and numbersprivate int xcenter = 80, ycenter = 55; // Center positionpublic void init() {int x,y;lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy",Locale.getDefault());currentDate = new Date();lastdate = formatter.format(currentDate);clockFaceFont = new Font("Serif", Font.PLAIN, 14);handColor = Color.blue;numberColor = Color.darkGray;try {setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));} catch (NullPointerException e) {} catch (NumberFormatException e) {}try {handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16));} catch (NullPointerException e) {} catch (NumberFormatException e) {}try {numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16));} catch (NullPointerException e) {} catch (NumberFormatException e) {}resize(300,300); // Set clock window size}// Paint is the main part of the programpublic void update(Graphics g) {int xh, yh, xm, ym, xs, ys;int s = 0, m = 10, h = 10;String today;currentDate = new Date();formatter.applyPattern("s");try {s = Integer.parseInt(formatter.format(currentDate));} catch (NumberFormatException n) {s = 0;}formatter.applyPattern("m");try {m = Integer.parseInt(formatter.format(currentDate));} catch (NumberFormatException n) {m = 10;}formatter.applyPattern("h");try {h = Integer.parseInt(formatter.format(currentDate));} catch (NumberFormatException n) {h = 10;}// Set position of the ends of the handsxs = (int) (Math.cos(s * Math.PI / 30 - Math.PI / 2) * 45 + xcenter);ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter);xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter);ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter);xh = (int) (Math.cos((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30+ xcenter);yh = (int) (Math.sin((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30+ ycenter);// Get the date to print at the bottomformatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");today = formatter.format(currentDate);g.setFont(clockFaceFont);// Erase if necessaryg.setColor(getBackground());if (xs != lastxs || ys != lastys) {g.drawLine(xcenter, ycenter, lastxs, lastys);g.drawString(lastdate, 5, 125);}if (xm != lastxm || ym != lastym) {g.drawLine(xcenter, ycenter-1, lastxm, lastym);g.drawLine(xcenter-1, ycenter, lastxm, lastym);}if (xh != lastxh || yh != lastyh) {g.drawLine(xcenter, ycenter-1, lastxh, lastyh);g.drawLine(xcenter-1, ycenter, lastxh, lastyh);}// Draw date and handsg.setColor(numberColor);g.drawString(today, 5, 125);g.drawLine(xcenter, ycenter, xs, ys);g.setColor(handColor);g.drawLine(xcenter, ycenter-1, xm, ym);g.drawLine(xcenter-1, ycenter, xm, ym);g.drawLine(xcenter, ycenter-1, xh, yh);g.drawLine(xcenter-1, ycenter, xh, yh);lastxs = xs; lastys = ys;lastxm = xm; lastym = ym;lastxh = xh; lastyh = yh;lastdate = today;currentDate = null;}public void paint(Graphics g) {g.setFont(clockFaceFont);// Draw the circle and numbersg.setColor(handColor);g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360);g.setColor(numberColor);g.drawString("9", xcenter-45, ycenter+3);g.drawString("3", xcenter+40, ycenter+3);g.drawString("12", xcenter-5, ycenter-37);g.drawString("6", xcenter-3, ycenter+45);// Draw date and handsg.setColor(numberColor);g.drawString(lastdate, 5, 125);g.drawLine(xcenter, ycenter, lastxs, lastys);g.setColor(handColor);g.drawLine(xcenter, ycenter-1, lastxm, lastym);g.drawLine(xcenter-1, ycenter, lastxm, lastym);g.drawLine(xcenter, ycenter-1, lastxh, lastyh);g.drawLine(xcenter-1, ycenter, lastxh, lastyh);}public void start() {timer = new Thread(this);timer.start();}public void stop() {timer = null;}public void run() {Thread me = Thread.currentThread();while (timer == me) {try {Thread.currentThread().sleep(100);} catch (InterruptedException e) {}repaint();}}public String getAppletInfo() {return "Title: A Clock \n"+ "Author: Rachel Gollub, 1995 \n"+ "An analog clock.";}public String[][] getParameterInfo() {String[][] info = {{"bgcolor", "hexadecimal RGB number","The background color. Default is the color of your browser."},{"fgcolor1", "hexadecimal RGB number","The color of the hands and dial. Default is blue."},{"fgcolor2", "hexadecimal RGB number","The color of the second hand and numbers. Default is dark gray."}};return info;}}文件Clock.java结束