In addition to the new AWT event model that we saw in Chapter 7, Events, there are a number of important new AWT features in Java 1.1. These new features were outlined in Chapter 4, What's New in Java 1.1. This chapter details many of those new features and demonstrates them in a single extended example application at the end of the chapter. The major features of the example are:
In addition, the example also demonstrates the use of object serialization to save and load application state. This functionality is described in Chapter 9, Object Serialization.
The new ScrollPane container holds a single child component that is usually larger than the ScrollPane itself. The ScrollPane displays a fixed-size area of the child and provides horizontal and vertical scrollbars so the user can scroll the child component within the "viewport" of the ScrollPane. Figure 8.1 shows a top-level window created by the application listed in Example 8.1 at the end of this chapter. As you can see, the application creates a ScrollPane container to hold the larger Scribble component that supports free-hand drawing.
The ScrollPane is quite easy to use. Simply create it and add a child component as you would with any other container. Note, however, that ScrollPane only supports a single child and it cannot have a LayoutManager specified. The ScrollPane is created in the ScribbleFrame() constructor of the example. The important thing to note is that the ScrollPane does not have any preferred or natural size of its own, so you should use setSize() to specify the size you want it to be. The ScrollPane class defines three constants that are legal values of its "scrollbar display policy." Because the example does not specify one of these constants, the policy defaults to SCROLLBARS_AS_NEEDED, which indicates that scrollbars are displayed for any dimension in which the contained child is larger than the available "viewport" space of the ScrollPane container.
Here is an excerpt of the ScribbleFrame() constructor that shows the creation of the ScrollPane:
ScrollPane pane = new ScrollPane(); // Create a ScrollPane. pane.setSize(300, 300); // Specify its size. this.add(pane, "Center"); // Add it to the frame. Scribble scribble; scribble = new Scribble(this, 500, 500); // Create a bigger scribble area. pane.add(scribble); // Add it to the ScrollPane.