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 17-3 only works correctly in a full browser; the AppletViewer does not display HTML pages, so it ignores this method!

Example 17-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 17-2 shows the program in operation.

ShowDocApplet program

Figure 17-2. ShowDocApplet program

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

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
13.58.120.57