Two Key Swing Features

As just explained, Swing was
created to address the limitations present in the AWT. It does this through two
key features: lightweight components and a pluggable look and feel. Together
they provide an elegant, yet easy-to-use solution to the problems of the AWT.
More than anything else, it is these two features that define the essence of
Swing. Each

is examined here.

Swing
Components Are Lightweight

With very few exceptions,
Swing components are lightweight.
This means that they are written entirely in Java and do not map directly to platform-specific
peers. Thus, lightweight components are more efficient and more flexible.
Furthermore, because lightweight components do not translate into native peers,
the look and feel of each component is determined by Swing, not by the
underlying operating system. As a result, each component will work in a
consistent manner across all platforms.

Swing
Supports a Pluggable Look and Feel

Swing supports a pluggable look and feel (PLAF). Because
each Swing component is rendered by Java code rather than by native peers, the
look and feel of a component is under the control of Swing. This fact means
that it is possible to separate the look and feel of a component from the logic
of the component, and this is what Swing does. Separating out the look and feel
provides a significant advantage: it becomes possible to change the way that a
component is rendered without affecting any of its other aspects. In other
words, it is possible to “plug in” a new look and feel for any given component
without creating any side effects in the code that uses that component.
Moreover, it becomes possible to define entire sets of look-and-feels that
represent different GUI styles. To use a specific style, its look and feel is
simply “plugged in.” Once this is done, all components are automatically
rendered using that style.

Pluggable look-and-feels
offer several important advantages. It is possible to define a look and feel
that is consistent across all platforms. Conversely, it is possible to create a
look and feel that acts like a specific platform. For example, if you know that
an application will be running only in a Windows environment, it is possible to
specify the Windows look and feel. It is also possible to design a custom look
and feel. Finally, the look and feel can be changed dynamically at run time.

Java 8 provides
look-and-feels, such as metal and Nimbus, that are available to all Swing
users. The metal look and feel is also called the Java look and feel. It is platform-independent and available in all
Java execution environments. It is also the default look and feel. Windows
environments also have access to the Windows look and feel. This book uses the
default Java look and feel (metal) because it is platform independent.