Mega Code Archive

 
Categories / Java / Swing JFC
 

Applet communication (talk to each other)

/* 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";     } }