Download the JDK
Search the Tutorials
Hide the TOC
Trail: Deployment
Lesson: Applets
Section: Practical Considerations When Writing Applets
Subsection: Creating a User Interface
Applets
Getting Started with Applets
Importing Classes and Packages for Applets
Defining an Applet Subclass
The Life Cycle of an Applet
Methods for Milestones
Methods for Drawing and Event Handling
Methods for Adding UI Components
What Applets Can and Can't Do
Taking Advantage of the Applet API
Finding and Loading Data Files
Displaying Short Status Strings
Displaying Documents in the Browser
Sending Messages to Other Applets
Playing Sounds
Defining and Using Applet Parameters
Deciding Which Parameters to Support
Writing the Code to Support Parameters
Giving Information about Parameters
Using the APPLET Tag
Practical Considerations When Writing Applets
Security Restrictions
Creating a User Interface
Creating a GUI
Displaying Diagnostics to the Standard Output and Error Streams
Getting System Properties
Threads in Applets
Threads in Applets: Examples
Working with a Server-Side Application
A Simple Network Client Applet
Using a Server to Work Around Security Restrictions
Finishing an Applet
Before You Ship that Applet
The Perfectly Finished Applet
Deploying Applets
General Deployment Considerations
Using the applet Tag
Using the object Tag
Using the embed Tag
Deploying Applets in a Mixed-Browser Environment
Solving Common Applet Problems
Questions and Exercises
Home Page > Deployment > Applets
Creating a GUI

> This page discusses the few issues that are particular to applet GUIs. Some of the information in this section might not make sense until you've read the Creating a GUI with JFC/Swing trail and, in particular, the How to Make Applets section. That trail discusses all the GUI concepts referred to on this page.

> Applets appear in pre-existing browser windows.
>   This has two implications. First, unlike GUI-based applications, applets don't have to create a window in which to display themselves. They can, if they have a good reason, but they often just display themselves within the browser window. Second, depending on the browser implementation, your applet's components might not be shown unless your applet calls `validate` after adding components to itself. Fortunately, calling `validate` can't hurt.

> The applet background color might not match the page color.
>   By default, applets have a white background color. HTML pages, however, can have other background colors and can use background patterns. If the applet designer and page designer aren't careful, the applet's different background color can cause it to stick out on the page or cause noticeable flashing when the applet is drawn. One solution is to define an applet parameter that specifies the applet's background color. The `JApplet` class can use `JComponent`'s `setBackground` method to set the applet's background to the color specified in the web page. Using the background color parameter, the page designer can choose an applet color that works well with the page colors. You'll learn about parameters in Defining and Using Applet Parameters.

> Each applet has a user-specified, pre-determined size.
>   The `<APPLET>` tag requires that the applet's width and height be specified. The web designer can set an applet's size by pixels, or by indicating a percentage of the browser window. Note that even if the amount of space is ideal for one platform, the platform-specific parts of the applet (such as buttons) might require a different amount of space on another platform. You can compensate by recommending that pages that include your applet specify a little more space than might be necessary, and by using flexible layouts, such as the `GridBagLayout` and `BorderLayout` classes, that adapt well to extra space.

> Applets load images using the `Applet getImage` methods.
>   The `Applet` class provides a convenient form of `getImage` that lets you specify a base URL as one argument, followed by a second argument that specifies the image file location, relative to the base URL. The `Applet getCodeBase` and `getDocumentBase` methods provide the base URLs that most applets use. Images that an applet always needs, or needs to rely on as a backup, are usually specified relative to where the applet's code was loaded from (the code base). Images that are specified by the applet user (often with parameters in the HTML file) are usually relative to the page that includes the applet (the document base).

> Applet classes (and often the data files they use) are loaded over the network, which can be slow.
>   Applets can do several things to decrease the perceived startup time. The `Applet` subclass can be a small one that immediately displays a status message. If some of the applet's classes or data aren't used right away, the applet can preload the classes or data in a background thread.

>   For example, if an applet class `start` method launches a thread that gets the `Class` object for a window, then the applet's main purpose in doing so is to make sure the class name the user specified is valid. An added benefit is that getting the `Class` object forces the class file to be loaded before the class is instantiated. When the user requests that the window be created, the applet instantiates the window class much quicker than if the applet still had to load the window class file.

Previous page: Creating a User Interface
Next page: Displaying Diagnostics to the Standard Output and Error Streams