Recipe 18.4 Making an Applet Show a Document


Problem

You want an applet to transfer control to another web page.

Solution

Use the AppletContext method showDocument( ) .

Discussion

Any applet can request the browser that contains it to show a new web page by passing the new URL into the showDocument( ) method. Usually, the browser replaces the current page with the target page. This, of course, triggers a call to the applet's stop( ) method.

Note that the applet shown in Example 18-3 works correctly only in a full browser; the AppletViewer does not display HTML pages, so it ignores this method!

Example 18-3. ShowDocApplet.java
/** ShowDocApplet: Demonstrate showDocument( ).   */   public class ShowDocApplet extends Applet {      // String targetString = "http://www.darwinsys.com/javacook/secret.html";      String targetString = "file:///c:/javasrc/network/ShowDocApplet.java";      /** The URL to go to */      URL targetURL;        /** Initialize the Applet */      public void init( ) {          setBackground(Color.gray);          try {              targetURL = new URL(targetString);          } catch (MalformedURLException mfu) {              throw new IllegalArgumentException(                  "ShowDocApplet got bad URL " + targetString);          }          Button b = new Button("View Secret");          add(b);          b.addActionListener(new ActionListener( ) {              public void actionPerformed(ActionEvent e) {                  getAppletContext( ).showDocument(targetURL);              }          });      }        public void stop( ) {          System.out.println("Ack! Its been fun being an Applet. Goodbye!");      }  }

Figure 18-2 shows the program in operation.

Figure 18-2. ShowDocApplet program
figs/jcb2_1802.gif


If the URL is unreachable, the browser notifies the user with a dialog, and the current page (including the applet) is left in view.



Java Cookbook
Java Cookbook, Second Edition
ISBN: 0596007019
EAN: 2147483647
Year: 2003
Pages: 409
Authors: Ian F Darwin

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net