#

| Chapter 6 |

# 6. Applets

Contents:
Introduction to Applets
A First Applet
Drawing Graphics
Handling Events
Reading Applet Parameters
Images and Sounds
JAR Files
Applet Security Restrictions
Signed Applets

This chapter demonstrates the techniques of applet writing. It proceeds from a trivial "Hello World" applet to more sophisticated applets. Along the way, it explains how to:

- Draw graphics in your applet.

- Handle and respond to simple user input.

- Read and use values of applet parameters, allowing customization of an applet.

- Load and display images and load and play sounds.

- Package an applet and related files into a JAR file.

- Attach a digital signature to an applet.

Study the examples carefully. They are the important part of this chapter! You may find it useful to refer to the quick reference in Chapter 17, The java.applet Package while reading these examples.

Note that this chapter merely introduces the framework for writing applets. Applets, like other Java programs, use features from throughout the Java API. See Chapter 7, Events, in particular, for details on event processing in Java applets and applications.

## 6.1 Introduction to Applets

An applet, as the name implies, is a kind of mini-application, designed to be run by a Web browser, or in the context of some other "applet viewer." Applets differ from regular applications in a number of ways. One of the most important is that there are a number of security restrictions on what applets are allowed to do. An applet often consists of untrusted code, so it cannot be allowed access to the local file system, for example. The details of applet security and the restrictions placed on applets are discussed at the end of this chapter.

From a programmer's standpoint, one of the biggest differences between applets and applications is that applets do not have a `main()` method, or other single entry point from which the program starts running. Instead, to write an applet, you subclass the `Applet` class and override a number of standard methods. At appropriate times, under well-defined circumstances, the Web browser or applet viewer invokes the methods you have defined. The applet is not in control of the thread of execution; it simply responds when the browser or viewer tells it to. For this reason, the methods you write must take the necessary action and return promptly--they are not allowed to enter time-consuming (or infinite) loops. In order to perform a time-consuming or repetitive task, such as animation, an applet must create its own thread, over which it does have complete control.

The task of writing an applet, then, comes down to defining the appropriate methods. A number of these methods are defined by the `Applet` class:

`init()`

  Called when the applet is first loaded into the browser or viewer. It is typically used to perform applet initialization, in preference to a constructor method. (The Web browser doesn't pass any arguments to an applet's constructor method, so defining one isn't too useful.)

`destroy()`

  Called when the applet is about to be unloaded from the browser or viewer. It should free any resources, other than memory, that the applet has allocated.

`start()`

  Called when the applet becomes visible and should start doing whatever it is that it does. Often used with animation and with threads.

`stop()`

  Called when the applet becomes temporarily invisible, for example, when the user has scrolled it off the screen. Tells the applet to stop performing an animation or other task.

`getAppletInfo()`

  Called to get information about the applet. Should return a string suitable for display in a dialog box.

`getParameterInfo()`

  Called to obtain information about the parameters the applet responds to. Should return strings describing those parameters.

In addition to these `Applet` methods, there are a number of other methods, inherited from superclasses of `Applet`, that the browser invokes at appropriate times, and that an applet should override. The most obvious of these methods is `paint()`, which the browser or viewer invokes to ask the applet to draw itself on the screen. In Java 1.1, a related method is `print()`, which an applet should override if it wants to display itself on paper differently than it does on the screen. There are quite a few other methods that applets should override to respond to events. For example, if an applet wants to respond to mouse clicks, it should override `mouseDown()`. (As we'll see in Chapter 7, Events, however, there are other, preferred, ways to receive mouse events in Java 1.1.)

The `Applet` class also defines some methods that are commonly used by applets:

`getImage()`

  Loads an image file from the network and returns an `Image` object.

`getAudioClip()`

  Loads a sound clip from the network and returns an `AudioClip` object.

`getParameter()`

  Looks up and returns the value of a named parameter, specified in the HTML file that refers to the applet with the `<PARAM>` tag.

`getCodeBase()`

  Returns the base URL from which the applet class file was loaded.

`getDocumentBase()`

  Returns the base URL of the HTML file that refers to the applet.

`showStatus()`

  Displays a message in the status line of the browser or applet viewer.

`getAppletContext()`

  Returns the `AppletContext` object for the applet. `AppletContext` defines the useful `showDocument()` method that asks the browser to load and display a new Web page.

Other New Features of Java 1.1 |  | A First Applet