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 /* <TITLE>Ian Darwin's Demo Choice Applet</TITLE> <BODY BGCOLOR="#c0e0d0"> <H1>Ian Darwin's Demo Choice Applet</H1> <TABLE> <TR><TD WIDTH=20%> <P>Here it is, just what you need to replace JavaScript with: <TD><!-- Need to adjust the height if you add more choices --> <APPLET CODE=SumUp WIDTH=250 HEIGHT=150> </APPLET> </TABLE> <HR> <P>Hey, we'll even show you <A HREF="SumUp.java">how it works</A>. */ import java.applet.Applet; import java.awt.Button; import java.awt.Choice; import java.awt.Color; import java.awt.GridLayout; import java.awt.Label; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; /** * <p> * SumUp is a simple applet that adds up some numbers. To make this really * useful for production, should implement a "little language" either in HTML * PARAMs, such as * * <pre> * * &ltparam name="title1" value="Option One"> * &ltparam name="values1" value="0|100|200|300|400"> * &ltparam name="title1" value="Option Two"> * &ltparam name="values1" value="0|400|600|800|1000"> * * </pre> * * <br/>or <br/>in a configuration file which we download and parse (see * TreeLink.java in this directory) or load as a Properties file (see * MenuIntl.java). * </p> * <p> * Also, of course, the URL to go to should be a PARAM. Not to mention the * colors (see ColorName and/or XColor). * </p> * * @author Ian F. Darwin, http://www.darwinsys.com/ */ public class SumUp extends Applet implements ActionListener { /** The array of Choice items */ protected Choice cs[] = new Choice[10]; /** How many are actually in the array. */ protected int numChoices = 0; /** The result of the summation */ protected Label resultField; /** The pushbutton to send the form in */ protected Button sendButton; /** init() is an Applet method called by the browser to initialize */ public void init() { setBackground(Color.magenta); // The layout of the Applet is a Grid; always add things in pairs! setLayout(new GridLayout(0, 2)); Choice c; add(new Label("Option 1")); add(c = new Choice()); c.addItem("0"); c.addItem("100"); c.addItem("200"); c.addItem("400"); cs[numChoices++] = c; add(new Label("Option 2")); add(c = new Choice()); c.addItem("0"); c.addItem("100"); c.addItem("200"); c.addItem("400"); cs[numChoices++] = c; Panel p = new Panel(); p.setBackground(Color.pink); p.add(new Label("Total:")); p.add(resultField = new Label("000000")); add(p); sendButton = new Button("Send it"); add(sendButton); // connect Button into Applet sendButton.addActionListener(this); // connect it back to Applet } /** * actionPerforformed() is called when a "high level" action happens (like * the user pushing a Button!) in one of the components added to this * Applet. */ public void actionPerformed(ActionEvent e) { // 1.1 int total = 0; for (int i = 0; i < numChoices; i++) { String text = cs[i].getSelectedItem(); // System.err.println("Selection " + i + " = " + text); int value = Integer.parseInt(text); total += value; } resultField.setText(Integer.toString(total)); try { URL myNewURL = new URL("http://server/cgi-bin/credit?sum=" + total); // System.out.println("URL = " + myNewURL); // debug... // "And then a miracle occurs..." getAppletContext().showDocument(myNewURL); } catch (Exception err) { System.err.println("Error!\n" + err); showStatus("Error, look in Java Console for details!"); } } }