Java tutorial
/* * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. * All rights reserved. Software written by Ian F. Darwin and others. * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions 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. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's, * pioneering role in inventing and promulgating (and standardizing) the Java * language and environment is gratefully acknowledged. * * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for * inventing predecessor languages C and C++ is also gratefully acknowledged. */ //applet.html /* <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>We've moved!</title> </head> <body bgcolor="White"> <h1>We've moved!</h1> <p>Please update your bookmarks. Our new address is:</P> <applet code=Redir.class width=300 heighT=100 alt="http://www.java2s.com"> <param name="URL" value="http://www.java2s.com"> <b>http://www.java2s.com</b> </applet> <hr/> <p>If you have a Java-enabled browser, we'll try to take you there in a few seconds.</p> </body> </html> */ import java.applet.Applet; import java.awt.Graphics; import java.net.URL; /** * A simple redirection applet. * * @author Ian Darwin */ public class Redir extends Applet implements Runnable { protected String urlString; protected URL theNewURL; protected final static int NSECONDS = 5; protected Thread t; public void init() { try { // Get the address from a PARAM... urlString = getParameter("URL"); if (urlString == null) { urlString = "MISSING URL"; throw new IllegalArgumentException("Redir requires a URL parameter in the HTML"); } // Make up the URL object theNewURL = new URL(urlString); // debug... // showStatus("URL = " + theNewURL); } catch (Exception err) { System.err.println("Error!\n" + err); showStatus("Error, look in Java Console for details!"); } } public void start() { if (theNewURL == null) return; t = new Thread(this); t.start(); } /** Print a little message to the user. */ public void paint(Graphics g) { if (urlString != null) g.drawString(urlString, 20, 50); else g.drawString("Initializing...", 20, 50); } /** * If users moves off the page, set Thread t to null so we don't * showDocument from within the middle of the new page! */ public void stop() { t = null; } /** * run, called by the Thread, does the work of sleeping for a fixed number * of seconds then, if the user hasn't moved off the page, actually passing * control to the new page. */ public void run() { for (int i = NSECONDS; i >= 0; i--) { try { Thread.sleep(1000); if (t == null) return; } catch (InterruptedException e) { // so what? } if (t == null) return; showStatus(Integer.toString(i)); if (t == null) return; showStatus("Ignition!"); // "And then a miracle occurs..." getAppletContext().showDocument(theNewURL); } } }