Preface
When Java was first released, its user interface facilities were a
significant weakness. The Abstract Window Toolkit (AWT) was part of
the JDK from the beginning, but it really wasn't
sufficient to support a complex user interface. It supported
everything you could do in an HTML form and provided free-standing
frames, menus, and a few other objects, but you'd be
hard-pressed to implement an application as complex as Quicken or
Lotus Notes. AWT also had its share of portability problems; it
relied heavily on the runtime platform's native user
interface components, and it wasn't always possible
to hide differences in the way these components behaved.
JDK 1.1
fixed a number of problems—most notably, it introduced a new
event model that was much more efficient and easier to use—but
it didn't make any major additions to the basic
components. We got a ScrollPane and a
PopupMenu, but that was about it. Furthermore, AWT
still relied on the native components and therefore continued to have
portability problems.
In April 1997, Sun's Java group (then called
JavaSoft) announced the Java Foundation Classes, or JFC, which
supersedes (and includes) AWT. A major part of the JFC was a set of
much more complete, flexible, and portable user interface components
called "Swing." (The JFC also
includes a comprehensive facility for 2D graphics, printing, and Drag
and Drop.) With Swing, you can design interfaces with tree
components, tables, tabbed dialogs, tooltips, and a growing set of
other features that computer users are accustomed to.
In addition to the new components, Swing made three major
improvements to the AWT. First, Swing doesn't rely
on the runtime platform's native components.
It's written entirely in Java and creates its own
components. This approach solved most of the portability problems
since components don't inherit weird behaviors from
the runtime environment or do they work against its grain. Second,
because Swing is in complete control of the components,
it's in control of the way components look on the
screen and gives you more control over how your applications look.
You can choose between several pre-built
"look-and-feels" (L&Fs), or you
can create your own if you want your software to show your personal
style (more appropriate for games than for daily productivity
software, of course). This feature is called
"Pluggable Look-and-Feel," or PLAF.
Third, Swing makes a very clear distinction between the data a
component displays (the "model")
and the actual display (the
"view"). While the fine points of
this distinction are appreciated mostly by computer scientists, it
has important implications for all developers. This separation means
that components are extremely flexible. It's easy to
adapt components to display new kinds of data that their original
design didn't anticipate or to change the way a
component looks without getting tangled up in assumptions about the
data it represents.
The first official release of Swing, for use with JDK 1.1, took place
in the spring of 1998. Swing (and the rest of JFC) was built into
Java 2 and revolutionized Java user interface development. The Swing
components continue to evolve with Java, and Java 2
SDK 1.4 is the best version yet. This book
shows you how to join the revolution.
|