In this section, we’ll take an in-depth look at several key classes and interfaces that make up the Swing PLAF design. Figure 26-4 shows the relationships between the classes (and interfaces) we will examine in this section.
Figure 26-4. High-level L&F class diagram
Before we look at the details of each of these classes, we’ll quickly describe the role each one plays:
The abstract base class from which all the different L&Fs extend. It defines a number of static convenience methods, as well as some abstract methods required by every L&F.
An L&F is responsible for defining a set of default
UIDefaults is a
Hashtable subclass that holds
these properties. The properties include
ComponentUI subclass mappings (e.g.,
MetalTreeUI) as well as lower-level
defaults, such as colors and fonts.
These inner interfaces of
UIDefaults enable some optimizations for
This is an empty interface (like
Cloneable) used to tag property values.
It allows values defined by the L&F to be distinguished from
values set by the user, as described in Section 26.3.5 later in
If you’ve ever changed the L&F of a Swing program at
runtime, you’re probably already familiar with this class.
UIManager is responsible ...