Home : Course Map : Chapter 6 : Java :
Swing
JavaTech
Course Map
Chapter 6

Introduction
AWT
Swing
Containers
  Demo 1
UI Components
  Demo 2
UI Layout
  Demo 3   Demo 4
Text Display
  Demo 5
Drawing
  Demo 6   Demo 7
Draw Polygons
  Demo 8   Demo 9
Colors
Text Draw 
  Demo 10
Images
  Demo 11
Exercises

    Supplements
AWT
  Demo 1
Drawing
  Demo 2
Text Drawing
  Demo 3
UI Components
  Demo 4

Java2D
Shapes & Areas
  Demo 1   Demo 2
Stroke & Paint
  Demo 3
Transforms
  Demo 4
Gradients&Textures
  Demo 5   Demo 6
Text
  Demo 7   Demo 8
     About JavaTech
     Codes List
     Exercises
     Feedback
     References
     Resources
     Tips
     Topic Index
     Course Guide
     What's New

As discussed in the previous AWT section, to provide a more powerful graphical user interface Sun and collaborators developed a set of lightweight component classes under the name Swing that initally ran under Java 1.1 as an optional set of packages and then with Java 1.2 became a part of the standard Java set of classes.

Note: Swing is considere a standard extension and not part of the core Java language, i.e. the package name starts with javax instead of java. It is included with the J2SE and J2EE kits and their corresponding run-time installations.

Some javax packages, such as javax.comm discussed in Chapter 23, pare not included with these SDKs and are called optional packages. They are not available necessarily available for the same range of platforms as the core language packages.

Swing brought a huge improvement in the GUI with new capabilities that ranged from buttons with user selected icons to checkboxes to tables with multiple columns and rows. The Look & Feel, that is, the color scheme and design, of the components could also be customized.

See Sun's Visual Index to the Swing Components for a look at the great variety of components available.

Swing and came as part of the Java Foundation Classes (JFC) set of packages that also include :

  • Pluggable Look & Feel - the style of the components, such as their color scheme and design, can be customized and can look the same regardless of the platform.

  • Accessibility API - modifies the interface for easier use by the disabled.

  • Drag and Drop - provides for moving data between Java programs and other programs running on the native host.

  • Java2D - an expanded set of drawing tools. These work within both the Swing and AWT components. We will discuss some basic Java2D techniques in the Chapter 6: Supplements.

Swing Class Hierarchy

The Swing classes build upon the lower level classes of the original AWT (java.awt) graphics packages. As the diagram shows below, the Swing user interface components, which always begin with the letter "J", extend from the Container and Component classes.


This diagram shows a subset of the Swing components (in dark gray)
and how they extend the AWT (in light gray) components.

Note: The diagram omits some Swing components like JTable. Also, there are various supporting classes in javax.swing packages that don't begin with "J".

The JComponent subclasses are lightweight (see AWT page), so they essentially run within a single heavyweight high level component, such as JFrame and JDialog, and draw and re-draw themselves completely within Java, no native code peer components involved.

Combined with the event handling process described in Chapter 7: Java, Swing components provide very flexible and elaborate GUI tools. One can also develop custom components in a straight forward manner by extended either JComponent or one of its subclass components.

It is now generally recommended that everyone switch their Java user interface design from AWT to Swing for all serious program development for PC and equivalent platforms.

Drawbacks to Swing

However, there are some practical drawbacks :

  • The number of Swing classes and their depth and complexity is far greater than the AWT.

  • Programs can take up large amounts of memory .

  • Many browsers in use still do not include Java 1.2 (or later) JVMs.

  • Browsers plug-ins to run applets with classes from 1.2 or later are available for some platforms but not all. Also the plug-ins require a large download the first time (then cached for later use). So this can be a problem for users on slow connections .

Note: In situations where these drawbacks prevent the implementation of Swing based GUI, such as when developing programs for small platforms, it can be necessary to remain within the older AWT framework. See the Chapter 6: Supplements section for a brief overview creating user interfaces purely with the standard AWT components.

We will cover a number of aspects of Swing in this and later chapters. However, Swing includes an enormous number of classes and so we can only touch on a fraction of their capabilities.

One popular reference for Swing prorgamming, Graphic Java 2: Mastering the JFC, requires more than 1600 pages to give in depth descriptions of all the Swing classes. To supplement the materials here, we recommend the on line Swing Tutorial at java.sun.com.

References and Web Resources

Latest update: Nov. 3, 2006

            Tech
Java Tech Graphics
Starting to Plot
  Demo 1
Drawing Panel
  Demo 2
Histogram Display

  Demo 3
Exercises

           Physics
Display Text Data
  Demo 1
Plot Data
  Demo 2
Find Max/Min
  Demo 3
Exercises

  
  Part I Part II Part III
Java Core 1  2  3  4  5  6  7  8  9  10  11  12 13 14 15 16 17
18 19 20
21
22 23 24
Supplements

1  2  3  4  5  6  7  8  9  10  11  12

Tech 1  2  3  4  5  6  7  8  9  10  11  12
Physics 1  2  3  4  5  6  7  8  9  10  11  12

Java is a trademark of Sun Microsystems, Inc.