This example is a more involved use of Swing user interface components.  It shows
how nested frames can be constructed and how to change the look-and-feel with
which the components are rendered.

This illustrates the split that Swing makes between the "Model" part of a
component and the "Delegate" part.  The model is responsible for holding the
abstract state of a component -- e.g. whether a button is pressed or not
pressed -- while the delegate is responsible for rendering the component to
the screen and dealing with input/output etc. 

Changing between (e.g.) the default 'metal' look and feel and the Windows-style
one involves updating the delegates but not the models.  Factory classes
are used to make sure that a consistent set of delegates is created.  Defining
a new look and feel is basically a case of defining a new factory class of 
the correct type and defining the different UI delegates which it should create.

Other systems have split this up even further by separating the delegate into
a "View" (responsible for rendering the model to the screen) and a
"Controller" (responsible for receiving input and passing updates to the 
model).  Smalltalk-80 is the classical example.

In this case "GUIExample" defines the main method.  