Java tutorial
/* From http://java.sun.com/docs/books/tutorial/index.html */ /* * Copyright (c) 2006 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. */ <applet code=Sender.class width=450 height=200 name="buddy"> <param name="receiverName" value="old pal"> </applet> <p> <applet code=Receiver.class width=450 height=35> <param name="name" value="old pal"> </applet> <applet code=GetApplets.class width=400 height=150> </applet> /* * 1.1 version. */ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.Enumeration; public class Sender extends Applet implements ActionListener { private String myName; private TextField nameField; private TextArea status; private String newline; public void init() { GridBagLayout gridBag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridBag); Label receiverLabel = new Label("Receiver name:", Label.RIGHT); gridBag.setConstraints(receiverLabel, c); add(receiverLabel); nameField = new TextField(getParameter("RECEIVERNAME"), 10); c.fill = GridBagConstraints.HORIZONTAL; gridBag.setConstraints(nameField, c); add(nameField); nameField.addActionListener(this); Button button = new Button("Send message"); c.gridwidth = GridBagConstraints.REMAINDER; //end row c.anchor = GridBagConstraints.WEST; //stick to the //text field c.fill = GridBagConstraints.NONE; //keep the button //small gridBag.setConstraints(button, c); add(button); button.addActionListener(this); status = new TextArea(5, 60); status.setEditable(false); c.anchor = GridBagConstraints.CENTER; //reset to the default c.fill = GridBagConstraints.BOTH; //make this big c.weightx = 1.0; c.weighty = 1.0; gridBag.setConstraints(status, c); add(status); myName = getParameter("NAME"); Label senderLabel = new Label("(My name is " + myName + ".)", Label.CENTER); c.weightx = 0.0; c.weighty = 0.0; gridBag.setConstraints(senderLabel, c); add(senderLabel); newline = System.getProperty("line.separator"); } public void actionPerformed(ActionEvent event) { Applet receiver = null; String receiverName = nameField.getText(); //Get name to //search for. receiver = getAppletContext().getApplet(receiverName); if (receiver != null) { //Use the instanceof operator to make sure the applet //we found is a Receiver object. if (!(receiver instanceof Receiver)) { status.append("Found applet named " + receiverName + ", " + "but it's not a Receiver object." + newline); } else { status.append("Found applet named " + receiverName + newline + " Sending message to it." + newline); //Cast the receiver to be a Receiver object //(instead of just an Applet object) so that the //compiler will let us call a Receiver method. ((Receiver)receiver).processRequestFrom(myName); } } else { status.append("Couldn't find any applet named " + receiverName + "." + newline); } } public Insets getInsets() { return new Insets(3,3,3,3); } public void paint(Graphics g) { g.drawRect(0, 0, getSize().width - 1, getSize().height - 1); } public String getAppletInfo() { return "Sender by Kathy Walrath"; } } /* * 1.1 version. */ import java.applet.*; import java.awt.*; import java.awt.event.*; public class Receiver extends Applet implements ActionListener { private final String waitingMessage = "Waiting for a message... "; private Label label = new Label(waitingMessage, Label.RIGHT); public void init() { Button button = new Button("Clear"); add(label); add(button); button.addActionListener(this); add(new Label("(My name is " + getParameter("name") + ".)", Label.LEFT)); } public void actionPerformed(ActionEvent event) { label.setText(waitingMessage); } public void processRequestFrom(String senderName) { label.setText("Received message from " + senderName + "!"); } public void paint(Graphics g) { g.drawRect(0, 0, getSize().width - 1, getSize().height - 1); } public String getAppletInfo() { return "Receiver (named " + getParameter("name") + ") by Kathy Walrath"; } }