11.1 Components
As we've just discussed,
the first step in creating a GUI is to create and configure the
components that comprise it. To do this, you need to be familiar with
the components that are available to you and their methods. Chapter 2 of Java Foundation Classes in a
Nutshell contains tables that list the available AWT and
Swing components. You can also find this information by looking at a
listing of the classes in the java.awt and
javax.swing packages; it is particularly easy to
identify Swing components, since their names all begin with the
letter J.Every component defines a set of
properties you can use to configure it. A
property is a named attribute of a component
whose value you can set. Typical component properties have such names
as font, background, and
alignment. You set a property value with a
setter method and query it with a
getter method. Setter and getter methods are collectively called
property accessor
methods, and their names usually begin with the
words "set" and
"get". The notion of component
properties is formally defined by the JavaBeans specification;
we'll see more about them in Chapter 15. For now, however, an informal understanding
will suffice: components can be configured by invoking various
methods whose names begin with
"set". Remember that components
inherit many methods from their superclasses, notably
java.awt.Component and
javax.swing.JComponent, so just because a
component class does not define a setter method directly does not
mean that the component does not support a particular property.Swing includes a large number of components, and it is not feasible
to include examples of each one in this chapter. Later in the
chapter, we'll see examples that highlight
particularly powerful components for displaying tables, trees, and
formatted text, and there are examples of more commonplace
componentssuch as buttons, checkboxes, and
menusthroughout the chapter. Instead of providing a guided
tour to the complete set of Swing components, I instead invite you to
conduct your own, using the ShowBean program
developed later in this chapter (and also in Chapter 15).As its name implies,
ShowBean is a program for
viewing
"JavaBeans components." All Swing
and AWT components are beans, so you can use it to view and
experiment with these components and their properties. Invoke
ShowBean with the name of one or more component
classes on the command line. Each class name may be followed by zero
or more property specifications of the form
name=value. The
program creates an instance of each named class and configures it by
setting the specified properties to the given values. The program
then displays the components using a Swing JTabbedPane
container within a JFrame window. For example, to
create the window displayed in Figure 11-1, I
invoked ShowBean as follows (this is one long
command line that has been wrapped onto multiple lines):
% java je3.gui.ShowBean javax.swing.JButton 'text=Hello World!'
font=helvetica-bold-48 javax.swing.JRadioButton 'text=pick me'
java.awt.Button label=Hello javax.swing.JSlider
Figure 11-1. Components displayed by ShowBean

In addition to the ability to set property values from the command
line, the Properties menu allows you
to view and set the values of certain properties. Similarly, the
Commands menu allows you to invoke
certain methods on the component. This is useful for experimenting
with no-argument methods, such as the cut( ) and
paste( ) methods inherited by
JTextField. The Properties menu is most useful if
ShowBean has access to "bean
info" for the Swing components viewed with the
program; in this case, it can display tooltips that give a short
description of each property in the menu. BeanInfo
classes for Swing components are contained in the file
lib/dt.jar in Sun's Java SDK.
Put this file in your classpath before running
ShowBean, or copy it to the
jre/lib/ext/ directory to make it permanently
available to all programs. "dt"
stands for "design time"the
files in dt.jar provide design-time enhancements
for GUI builders and programs like ShowBean, but
are not required by any of the components at runtime.One of the powerful features of
the Swing component library is its use of a pluggable look-and-feel
architecture, which enables an entire GUI to change its appearance.
The default appearance, known as the
"Metal" look-and-feel, is the same
across all platforms. However, a program can choose any installed
look-and-feel, including ones that simulate the appearance of native
OS applications. One of the interesting features of the
ShowBean program is its pull-down menu labeled
Look and Feel. It allows you to
choose from any of the installed look-and-feels.[2]
[2] Although the Windows look-and-feel comes standard with the Java
distribution, legal issues prevent its use on any OS other than
Windows. So, although this choice may appear in the menu, you
can't use it if you are not using a Microsoft
operating system.
Many examples in this chapter (as
well as some examples in subsequent chapters) take the form of
component subclasses rather than complete programs with a
main( ) method. In addition to using the
ShowBean program as a way to experiment with
predefined Swing and AWT components, we'll also use
it as a viewer for other examples.