Previous | Next | Trail Map | Writing Applets | Table of Contents


Overview of Applets

This lesson discusses the parts of an applet. If you haven't yet compiled an applet and included it in an HTML page, you might want to do so now. Step by step instructions are in Getting Started: The "Hello World" Applet .

Every applet is implemented by creating a subclass of the Applet class. The following figure shows the inheritance hierarchy of the Applet class. This hierarchy determines much of what an applet can do and how, as you'll see on the next few pages.

java.lang.Object
   |
   +----java.awt.Component
           |
           +----java.awt.Container
                   |
                   +----java.awt.Panel
                           |
                           +----java.applet.Applet

A Simple Applet

Below is the source code for an applet called Simple. The Simple applet displays a descriptive string whenever it encounters a major milestone in its life, such as when the user first visits the page the applet's on. The pages that follow use the Simple applet and build upon it to illustrate concepts that are common to many applets. If you find yourself baffled by Java source code, you might want to go to Writing Java Programs to learn about the language.

import java.awt.Graphics;

public class Simple extends java.applet.Applet {

    StringBuffer buffer = new StringBuffer();

    public void init() {
	resize(500, 20);
        addItem("initializing... ");
    }

    public void start() {
        addItem("starting... ");
    }

    public void stop() {
        addItem("stopping... ");
    }

    public void destroy() {
	addItem("preparing for unloading...");
    }

    public void addItem(String newWord) {
	System.out.println(newWord);
	buffer.append(newWord);
	repaint();
    }

    public void paint(Graphics g) {
	g.drawRect(0, 0, size().width - 1, size().height - 1);
	g.drawString(buffer.toString(), 5, 15);
    }
}
For comparison, here's the Alpha 3 version of Simple.java.

The Life Cycle of an Applet

You can use the Simple applet to learn about the milestones in every applet's life.

Methods for Milestones

The Applet class provides a framework for applet execution, defining methods that the system calls when milestones -- major events in an applet's life cycle -- occur. Every applet must override some or all of these methods to respond appropriately.

Methods for Drawing and Event Handling

Applets inherit the drawing and event handling methods of the AWT Component class. (AWT stands for Advanced Windowing Toolkit; it's the package that applets and applications use to produce user interfaces.) Drawing refers to anything related to representing an applet on-screen -- drawing images, presenting user interface components such as buttons, or using graphics primitives. Event handling refers to detecting and processing user input such as mouse clicks and key presses, as well as more abstract events such as saving files and iconifying windows.

Methods for Adding UI Components

Applets inherit from the AWT Container class. This means that they are designed to hold Components -- user interface objects such as buttons, labels, pop-up lists, and scrollbars. Like other Containers, applets use layout managers that control the positioning of Components.

Threads in Applets

Even the simplest applets run in multiple threads, although it's not always apparent. Many applets create and use their own threads, so that they perform well without affecting the performance of the applet viewer or of other applets.

What Applets Can and Can't Do

For security reasons, applets that are loaded over the network have several restrictions. One is that an applet can't ordinarily read or write files on the computer that it's executing on. Another is that an applet can't make network connections except to the host that it came from. Despite these restrictions, applets can do some things that you might not expect.


Previous | Next | Trail Map | Writing Applets | Table of Contents