Home > Store

Core JFC, 2nd Edition

Register your product to gain access to bonus material or receive a coupon.

Core JFC, 2nd Edition


  • This product currently is not for sale.
Not for Sale


  • Copyright 2002
  • Dimensions: K
  • Pages: 1712
  • Edition: 2nd
  • Book
  • ISBN-10: 0-13-090581-X
  • ISBN-13: 978-0-13-090581-9

The worldwide JFC bestseller, updated for J2SE 1.3 and new Swing enhancements!

  • Expert-level JFC techniques and industrial-strength code examples
  • Advanced Swing solutions for superior Java(tm) user interfaces
  • In-depth discussion of all the Swing components and subsystems

Core JFC delivers:

  • Expert Swing techniques for superior user interfaces
  • Specific answers to the JFC problems experienced developers encounter most often
  • New techniques that utilize JFC enhancements in J2SE 1.3

In-depth coverage of all the Swing components.

With Java 2 Standard Edition Version 1.3, Sun has enhanced the Java Foundation Classes with new features and superior performance. In Core JFC, Second Edition, Kim Topley updates his bestselling guide to JFC, giving serious developers the detailed information they need to make the most of the latest version.

Using industrial-strength examples, Core JFC, Second Edition presents JFC in depth — and introduces key JFC features that are new to J2SE 1.3, including Swing enhancements, input validation, and new key binding schemes. Topley presents powerhouse JFC techniques that are of value to all JFC programmers, from beginner to expert.

Topley's advanced Swing coverage includes solutions to many of the key problems developers face most often. He introduces expert techniques for working with tree components, using custom renderers and editors, working with text components, using the internal frames feature to create multi-document applications, and much more.

If you're ready to use all the power JFC gives you, you're ready for Core JFC, Second Edition!

About the CD-ROM

The accompanying CD-ROM contains an extensive source code library that can be compiled and run from Windows, Solaris, and Linux, along with complete versions of Borland's JBuilder 4, Foundation Edition for all three platforms.

Every Core Series Book:

  • Demonstrates practical techniques used by professional developers
  • Features robust, thoroughly tested sample code and realistic examples
  • Focuses on cutting-edge technologies you need to master today
  • Provides expert advice that will help you build superior software

Sample Content

Online Sample Chapter

The Tree Control: Managing Data with JTree

Table of Contents

(NOTE: Each chapter concludes with a Summary.)


Who This Book Is For. What You'll Need. How This Book Is Organized. Conventions Used in This Book. About the CD-ROM. Feedback. Further Information. Acknowledgments.


1. Introduction to the Java Foundation Classes.

What Are the Java Foundation Classes? Overview of JFC Features. The Swing Packages. The Model-View-Controller Architecture.

2. Frames, Labels and buttons.

The Shell of an Application: The JFrame Class. Components and Their Properties. Containers and Layout Managers. Event Handling. Using Buttons. Images on Components: Icons.

3. Managing the User Interface.

Layout Managers. Component Orientation. Working with the Application Window.

4. Graphics, Text Handling and Printing.

Working with Graphics. A Graphics Application. Rendering Text. Printing Graphics and Text.


5. Keyboard Handling, Actions, and Scrolling.

Implementing Mouseless Operation. Scrolling Components. Logical Scrolling and Forcing Visibility of an Area. Implementing Scrolling with JscrollBar. Scrolling with the Keyboard. Component Autoscrolling.

6. Menus and Toolbars.

The Menu Bar and the Menu System. Toolbars. Actions and Java 2 Version 1.3.

7. Using Standard Dialogs.

Basic Dialogs. The JFileChooser Component.

8. Creating Custom Dialogs.

Creating Custom Dialog Boxes. Tabbed Panes and Borders. Swing Components Often Used in Dialogs.


9. Text Controls.

Simple Text Controls. Input Verification. Text Components: Under the Hood. Getting Multiple Views of a Document. Documents with Nontext elements: JTextPane and JeditorPane.

10. The Tree Control.

The Tree Control. Custom Tree Rendering and Editing.

11. The Table Control.

An Overview of the Table Control. The Table Model. Table Columns and the Table Column Model. The Table Control. Customized Table Rendering and Editing.

12. Multiple-Document Applications.

Internal Frames. Layered Panes. Working with Internal Frames. Icons, the Desktop Pane and the Desktop Manager. An Example Multiple-Document Application.

13. The Pluggable Look-And-Feel.

The Look-and-Feel and the UIManager. Changing Component Look-and-Feel.




The Java Foundation Classes (JFC) are a collection of user interface features that are included as part of the Standard Edition of Java 2 platform. Many of these features, most notably the Swing user interface toolkit, were actually initially developed before the Java 2 was released and can also be used with JDK 1.1. The JFC is such a large topic area that to cover it in one volume and give it the treatment that it deserves, and that an experienced programmer would expect, is an impossible task. So, this volume doesn't attempt to describe everything that falls under the JFC banner. Instead, I have chosen to concentrate on the parts that are of the most immediate interest to programmers working in the commercial Java development environment today. More advanced topics are discussed at length in this book's companion volume, Core Swing: Advanced Programming, which is also published by Prentice Hall PTR.

Most of this book is concerned with the subset of the JFC that you can use with both JDK 1.1 and the Java 2 platform. Specifically, this means the Abstract Windows Toolkit (AWT) as it existed in JDK 1.1, which is briefly covered as introductory or refresher material; printing, a JDK 1.1 feature that is deemed to be part of the JFC; and the Swing component set, which is the main focus of this book.

In writing about Swing, I have tried to include material that is of immediate interest to programmers who will want to use it to create real applications. The approach I have taken throughout is to explain how the Swing components and the various new Swing mechanisms (such as keyboard accelerators) work by giving an overview of each topic and then presenting examples that show the basic principles. Then, typically, I move on to show more complex use of the component or feature and how it can be used together with other components and features to solve real application-related problems. Much of the time, you can find out some of what you want to know by reading the documentation that comes with the JDK or Swing package, but this documentation often falls short of explaining the more complex features and how they interact. These are the things that programmers usually need to understand before they can make full use of what is available. You'll find those explanations in this book.

I have tried to write this book as I would have liked to have seen it as an experienced programmer wanting to learn about Swing for the first time. By reading the documentation, studying the source code, disassembling the class files, and trying various test cases, I have tried to do more than just scratch the surface of this large and complex topic by gathering together material and examples that are not available in Sun's documentation and presenting it in an organized, focused manner.

Who This Book Is For

This book is for experienced Java programmers who want to find out about the Java Foundation Classes and, in particular, the Swing component set. Because this book is aimed at experienced Java programmers, you'll find that most of the examples are not trivial, with the exception of some of those in the early chapters that illustrate basic points that, for reasons of clarity, can't be embedded. Many of the examples that you'll find in this book are intended to be used as a starting point for writing production code that you can include in your own applications; some of the material here has been included specifically to address the most common questions that have been aired in the various news and discussion groups since the early versions of Swing were released. In particular, I have tried to address the following issues that seemed to cause the most confusion:

  • Creating and customizing tree components.
  • Custom renderers and editors for list boxes, trees, and tables.
  • How to use the powerful Swing text components, including a detailed description of how they work.
  • Making proper use of the internal frames feature to create multidocument applications.
  • Customizing individual components by creating your own look-and-feel classes.

The focus in this book is entirely on writing Java applications rather than on applets. However, if you're already thoroughly familiar with applets, you'll find that you can use write applets using Swing very quickly and most of this book will still apply, since Swing components can be used in applets just as easily as in applications. To make the task even easier, there is an appendix devoted entirely to using Swing in the applet environment, including discussion on some of the topics that cause problems for developers, such as how to use Swing with a browser that doesn't include it and how to access non-code resources, such as image files, in a browser- and location-independent way.

What You'll Need

This book is written with the assumption that you are familiar with the Java language and the core Java classes and that you can compile and run Java applications. Although this book is mainly about the Swing components, the first few chapters cover the basic principles of the Abstract Windows Toolkit (AWT), knowledge of which is a prerequisite for understanding Swing. You'll get the most from this book if you have read Core Java 2, Volume I—Fundamentals by Cay S. Horstmann and Gary Cornell, also published by Prentice Hall PTR, and if you understand inner classes, which are heavily used both in the Swing source code and in the examples shown in this book. Core Java includes excellent coverage of this topic.

Assuming that you have a computer running Windows 95, Windows 98, Windows 2000, Windows NT version 4 or later, Linux or Solaris, everything else that you need, including the Java 2 platform itself and a professional development environment (JBuilder 4 Foundation Edition), is included on the CD-ROM that accompanies this book.

How This Book Is Organized

The book is divided into three sections. Section 1, "From AWT to Swing" (Chapters 1 through 4), describes the relationship between the Abstract Windows Toolkit and Swing. Because Swing is based on the AWT, some understanding of the latter is needed before you can make full use of Swing. Therefore, this book opens by presenting the fundamentals of the AWT for those who are not entirely confident that they fully understand them and as a revision for those who do. These early chapters are, however, written not simply as a short course on the AWT, but they deliberately have a Swing slant to them so that as early as Chapter 2 you will meet and use your first Swing components. I recommend that everybody reads Chapter 1 and then, depending on your background, you should read, or at least skim, Chapters 2 through 4.

Section 2, "Using Swing to Build Better Applications" (Chapters 5 through 8), deals with the various new mechanisms and components that Swing offers that have no real parallel in the AWT. Much of this section deals with individual Swing components or Swing concepts and, to a certain extent, the chapters here can be read in any order. Finally, Section III, "Advanced Topics" (Chapters 9 through 13), covers larger topic areas such as the tree and table components and the pluggable look-and-feel.

Chapter 1 introduces the Java Foundation Classes (JFC) and puts them into perspective by comparing them to the AWT. You'll learn the scope of the JFC and get a quick overview of the main features of the Swing component set. The last part of this chapter introduces you to one of the more novel features of Swing—the so-called "pluggable look-and-feel," which allows applications to adapt their appearance to suit the platform that they are running on or to take on the same appearance across all platforms. It also explains the basis of this facility, the Model/View/Controller architecture (MVC).

Chapter 2 is the first of the AWT revision chapters. This chapter begins by introducing the Swing JFrame class as the top-level window of an application and uses it to illustrate basic AWT concepts such as components, containers, position, size, color, fonts, and so on. The second half of this chapter includes material on event handling and introduces Swing's JLabel and JButton classes, which allow you to include text and an image on the same component. Here, you'll also find out about some Swing features that don't really exist in the AWT, such as icons and accelerator keys.

Chapter 3 is concerned with global user-interface issues, principal among which is controlling the layout of components in the interface. With this in mind, almost the whole chapter is devoted to in-depth coverage of the AWT and Swing layout managers. Layout managers are a topic that is often given only fleeting coverage in Java books and yet represents a large proportion of the questions that are asked in the Java-related Internet newsgroups. Here, I have tried to create a consistent picture of all of the layout managers and to address the most common misunderstandings by illustrating how each of them lays out its container and how resizing the container affects the positioning of the components.

Swing includes a useful new feature that can help with understanding problems with component layout—Graphics Debugging. This feature allows you to see how your components are drawn, line-by-line, in slow motion. Chapter 3 looks at this feature and shows you how to use it, concluding with a look at the events generated by windows and by individual components.

Chapter 4 covers the AWT Graphics object and describes how you can use it to render text and draw graphics. The main body of this chapter is devoted to building a complete Swing application that allows you to use the mouse to draw and fill colored graphic shapes. While constructing this application, you'll put into practice much of what was covered in the previous two chapters and you'll also discover how to create custom icons and components with borders. The completed application will serve as a starting point for several improvements that will be made to it in the rest of the book. Chapter 4 closes with a discussion of printing, another topic that has caused much confusion in the past.

Chapter 5 shows you how to develop applications that work well when the user prefers to use the keyboard rather than the mouse, and introduces focus handling and the powerful concept of Actions. Actions are often used in Swing to abstract an action to be performed from the stimulus to perform it—such as a keystroke or a button press. The second half of the chapter looks at how Swing supports scrolling using the new JScrollPane and JScrollBar components, which are much more powerful than their AWT counterparts.

Chapter 6 introduces the Swing menu system. Swing menus are more consistent than those available with AWT. Keyboard accelerators are available on any menu or menu item and you can use icons as well as, or instead of, text. You'll also see how to integrate the Actions that were introduced in Chapter 5 with the menu system and with another new Swing facility, the toolbar.

Chapter 7 is the first of two chapters that contain extensive coverage of dialogs. This chapter concentrates on the basic dialogs that you can easily create using the JOptionPane component, which allow you to post error, warning, and information messages, or present options to the user and wait for a choice to be made. Two more complex, but extremely useful standard dialogs, the file chooser and color chooser, are also covered in this chapter.

Chapter 8 shows you how to use the Swing JDialog class to create your own dialogs. This chapter also introduces many of the Swing components that are useful in dialogs, such as tabbed panes, list boxes, combo boxes, progress controls, and sliders.

In Chapter 9, you'll find an in-depth description of the Swing text controls, starting with the simple JTextField and JTextArea components, which are related to the AWT TextField and TextArea controls. The Swing controls are underpinned by a complex but powerful document model that is covered in detail in this chapter. The description of the document model is followed by a description of two new Swing text controls-JTextPane, which allows multiple fonts, colors, images, and event components to be mixed in a view of a document, and the flexible JEditorPane, which adapts itself to render documents held as plain text, HTML, Rich Text Format, and a potentially infinite number of other formats.

Chapter 10 describes the Swing tree control and shows you how to build a tree, how to control which parts of it are expanded or collapsed, and how to traverse the tree in various different ways. This chapter also shows you a custom control based on the tree that presents a file system in a manner familiar to users of the Windows platform. It describes in detail how to customize trees using specially-developed renderers to control how the various pieces of the tree are drawn.

Chapter 11 is concerned with the table component. This component allows you to present data in a tabular form. You'll see how to determine the order of columns and their sizes and how to change the way in which the data in the table is displayed. There is also a section on table cell editors, which shows you how to present to the user a suitable interface for changing the content of the table.

Chapter 12 discusses Swing's support for multiple-document applications. Starting with a discussion of the basic components that make multiple-document applications possible, the chapter moves on to discuss desktop panes and icons and the desktop manager. You'll also see how to create a custom desktop pane that automatically cascades or tiles the windows that it manages and how to customize the desktop manager itself.

Finally, Chapter 13 returns to the theme of the pluggable look-and-feel that was first touched on in Chapter 1. This chapter shows the underlying support for changing the look-and-feel of an application, then shows you how to create your own user interface for the Swing button component. Finally, you'll see various ways to introduce look-and-feel related customizations into your application and how to create your own look-and-feel.

This book covers all of the Swing components and most of the other important Swing features. For ease of reference, the following table lists the Swing components, along with the chapters in which they are described.

Component Chapter Component Chapter
Box 3 JRadioButtonMenuItem 6
BoxLayout 3 JRootPane 2
JButton 2 JScrollBar 5
JCheckBox 8 JScrollPane 5
JCheckBoxMenuItem 6 JSeparator 8
JComboBox 8 JSlider 8
JComponent 2 JSplitPane 9
JDesktopPane 12 JTabbedPane 8
JDialog 8 JTable 11
JEditorPane 9 JTextArea 9
JFrame 2 JTextField 9
JInternalFrame 12 JTextPane 9
JLabel 2 JToggleButton 8
JLayeredPane 12 JToolBar 6
JList 8 JToolTip 8
JMenu 6 JTree 10
JMenuBar 6 JViewport 5
JMenuItem 6 JWindow 2
JOptionPane 7 OverlayLayout 3
JPanel 2 ProgressMonitor 8
JPasswordField 9 ProgressMonitorInputStream 8
JPopupMenu 6 Timer 8
JProgressBar 8 UIDefaults 13
JRadioButton 8 UIManager 13

About the CD-ROM

The CD-ROM that accompanies this book contains the following:

  • The source code for all of the examples in this book.
  • A copy of the JBuilder 4 Integrated Development Environment for Windows, Linux, and Solaris, which includes a compiler and a copy of the Java 2 Runtime Environment (JRE) version 1.3.
  • A copy of SwingBuilder, a utility that allows you to graphically create Swing-based user interfaces.
  • A chapter from Core Swing: Advanced Programming in PDF form.

Compiling the Source Code

For convenience, the example code contains three JBuilder project files that allow you to compile and run all of the source code from within the development environment. With the exception of the applet examples in Appendix A, all of the book's source code can be conveniently accessed by opening the project file CoreJFCExamples.jpr in the directory into which you installed them. To open this project file, run JBuilder, open the File menu, select Open Project and then navigate to the CoreJFCExamples.jpr file and click on it. When you do this, you will see a set of folders in the left-hand pane of the JBuilder main window, as shown in Figure P-1.

Each folder is labeled for one of the chapters of this book and contains all of the examples for that chapter, with the exception of the Cjfc folder which contains additional files used in Chapter 13. In Figure P-1, the Chapter2 folder has been opened to show the example code for Chapter 2. To view a source file, double click on the name and it will be opened in the main window of the IDE.

To compile the source code, open the Project menu and select Rebuild Project "CoreJFCExamples.jpr". This will compile all of the source code, placing each class file in the same directory as its corresponding source file. You should also open the other two project files, CoreJFCAppendixBNative.jpr and CoreJFCAppendixAPlugin.jpr, and follow the same process to compile the remaining source code.

Running the Examples Using JBuilder

Since JBuilder 4 comes with a complete copy of the Java Runtime Environment version 1.3, you can use it to compile and run all of the source code in this book. It is a simple matter to run any given example. For example, in Chapter 2, you will find an instruction to run the first example using the command

java JFCBook.Chapter2.BasicFrame

To run this example from within the IDE, do the following:

  1. Open the Project Menu
  2. Select Project Properties
  3. When the Project Properties Dialog appears, select the Run tab
  4. Press the button with three dots on it on the Application tab
  5. In the next dialog, open the "JFCBook" node and then the "Chapter2" node to show the classes for the Chapter 2 examples
  6. Select the example that you want to run-in this case, BasicFrame, by double clicking, as shown in Figure P-2
  7. Close the Project Properties Dialog

This apparently long-winded process (which will get easier with time!) makes BasicFrame the current example. In order to run it, open the Run menu and select Run Project, or just press F9. Incidentally, you can also use the debug features of JBuilder to step through any of the example source code by using the Debug Project menu item. Usually, you would first open the source file and apply a breakpoint before doing this.

Using the Example Source Code with the Java Development Kit

If you prefer not to use a development environment, you can compile and run the examples using the Java Development Kit.

Preparing to Use the Example Code with JDK 1.1

Swing is not part of the core Java platform in JDK 1.1. Therefore, if you want to use the examples with JDK 1.1, you will need to download and install both JDK 1.1 and Swing version 1.1.1. You can download the Java Development Kit from the JavaSoft Web site at


and Swing version 1.1.1 from


Instructions for installing both products are available as part of the download. For the purpose of the descriptions that follow, we assume that you install the Java Development Kit in the directory c:\jdk1.1.8 and Swing in c:\Swing-1.1.1.

Having completed the installation, you need to set your PATH and CLASSPATH variables so that all of the executables and classes that you need to access are readily available. The instructions here assume that you are using a DOS session under Windows. Similar commands should be substituted if you are installing under Solaris or Linux.

The PATH variable must be set so that the javac and java commands are accessible when compiling and running the examples. Assuming that the JDK has been installed as described above, the following command will set the PATH variable appropriately:


The CLASSPATH variable should be set to include both the JDK classes, the Swing classes, and the classes for the book's examples. Having installed Swing, you need to add the appropriate JAR files to your CLASSPATH. Swing contains several JAR files, all of which are found in the c:\swing-1.1.1 directory:


You can either choose to include the optimal set of files for your platform, or you can simply add swingall.jar to your CLASSPATH. If you just want to use the standard Metal look-and-feel, you can get away with adding swing.jar. If you want to use the Windows, Mac, or Motif look-and-feel as well, add windows.jar, mac.jar, and/or motif.jar. If you plan to develop Java Accessibility features (a topic outside the scope of this book), you need to add multi.jar. You won't need to use beaninfo.jar file unless you need to recreate your own version of swingall.jar.

The following commands are sufficient to use Swing with the Metal, Windows, or Motif look-and-feels:

set CLASSPATH=c:\jdk1.1.8\lib\classes.zip;%CLASSPATH%set CLASSPATH=c:\swing-1.1.1\swingall.jar;%CLASSPATH%set CLASSPATH=c:\CoreJFCExamples;%CLASSPATH%

In order to make these settings persistent, you should add these commands to your AUTOEXEC.BAT file.

Having installed the necessary software, the next step is to compile the example code. This process is described in "Compiling and Running the Example Code."

Core Alert

Swing 1.1.1 is the last version of Swing that will be issued by JavaSoft for use with JDK version 1.1. As of October 2002, it will no longer be supported. JDK version 1.1 is itself undergoing its "end of life cycle" and will also no longer be supported by JavaSoft at around the same time.

Preparing to Use the Example Code with the Java 2 Platform

The Java 2 platform includes the Swing classes, so you do not need to install a separate Swing package. The example code in this book works with both Java 2 version 1.2 and Java 2 version 1.3, which you can download from the following locations:


Both of these downloads include installation instructions.

As with JDK 1.1, following installation you need to set both the PATH and CLASSPATH variables. In the descriptions that follow, we assume that you have installed the JDK in the directory c:\jdk1.3.

The PATH variable should be set to include the locations of the javac and java commands:


By comparison with JDK 1.1, the CLASSPATH variable does not need to include the location of the JDK core classes, since these are located by other means when the Java 2 platform is being used. Therefore, only the location of the example code needs to be added to the CLASSPATH:


Compiling and Running the Example Code

If you did not unpack the examples when you installed them, you should do so now. Make the directory in which the examples.zip file has been installed (c:\CoreJFCExamples) your working directory, then execute the following command:

jar xvf examples.zip

This will extract all of the examples. You should now have a directory called JFCBook in your CoreJFCExamples directory, with one subdirectory per chapter. A typical layout might be as follows:


and so on. If you do not have this layout, you have done something wrong and the example programs will not work. One possible problem you might have at this stage is an inability to run the jar command or an error while running it. If this is the case, either your PATH variable or your CLASSPATH variable is not correctly set. Check that you have correctly followed the instructions in this section, then reboot your computer to make sure that the settings have been incorporated into your environment.

The examples for each chapter are held in a directory named after that chapter and all the examples in that directory must be compiled together. You must also build the examples in ascending chapter-number order, apart from those in Chapter 13, which must be built after those in the directory Cjfc. The correct build order, therefore, is as follows:

  • Chapter2 through Chapter12
  • Cjfc
  • Chapter13
  • AppendixA\Native
  • AppendixA\Plugin

To build the examples for Chapter 2, for example, do the following:

cd C:\CoreJFCExamples\JFCBook\Chapter2javac *.java

This process should be repeated for each chapter, in the order just shown.

Some of the chapters have additional examples that can be used with different versions of the Java 2 platform. For example, the Chapter2 directory has subdirectories called jdk12 and jdk13. The examples in the jdk12 directory can be used with any version of the Java 2 platform, whereas those in the jdk13 directory apply only to Java 2 version 1.3 or later. To use these examples, you will need to compile them first; for example:

cd C:\CoreJFCExamples\JFCBook\Chapter2\jdk1.2javac *.java

Do not attempt to compile the examples in the jdk13 subdirectories unless you are using Java 2 version 1.3.

To run the examples, you must have the directory C:\CoreJFCExamples in your CLASSPATH, as described earlier. You must then supply the full class name of the example that you want to run along with any required parameters as described in the appropriate chapter. For example, to run the first example in Chapter 2, use the following command:

java JFCBook.Chapter2.BasicFrame

In most cases, at appropriate points throughout the text, you will find explicit instructions that tell you how to run particular examples. Usually, however, you just need to use the example's class name and its chapter number as shown here.

Using SwingBuilder

SwingBuilder is a utility that allows you to visually create Swing-based user interfaces. Unlike JBuilder, it is not a complete development environment. Instead, it is one component of a suite of IDE tools produced by SwingSoft, a UK-based company who can be contacted via their Web site at www.swingsoft.com, where you can also find details of their other IDE components. Unlike most GUI builders, SwingBuilder does not generate code from your user interface design. Instead, it saves either a compact binary representation of your component layout, or it creates an XML file. At runtime, software provided by SwingSoft (and included with SwingBuilder) reads either of these formats and recreates the user interface.

The CD-ROM contains an evaluation copy of SwingBuilder for Windows platforms. In the directory Software\SwingBuilder, you'll find a ZIP file that you can expand onto your hard drive. The set of files extracted from this archive contains a file, sb.bat, that can be used to run SwingBuilder. You must pass the name of the directory into which SwingBuilder has been installed as a command line argument. If you expand the ZIP archive into a directory called C:\SwingBuilder, then the following commands will start SwingBuilder:

cd C:\SwingBuildersb.bat c:\SwingBuilder


No book is perfect and this one is unlikely to be an exception to that rule. Even though it has been through a long period of revision and technical review, there are, of course, errors still to be found and improvements still to be made. If you find an error or if there is something that you think might make the book more useful, we want to know. Please send comments and corrections to the following e-mail address:


Further Information

Java is a fast-moving subject. To keep up with developments, reading books is not enough. The best place for up-to-date information is, of course, the JavaSoft Web site at:


You can get the most recent information on Swing and download the latest version of the software from the following page:


JavaSoft also provides an online Swing magazine called The Swing Connection, which is periodically updated and can be found at:


Finally, there are several active newsgroups devoted to the discussion of the Java platform. The following two groups in particular frequently discuss Swing and JFC-related issues:



Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020