GUI Form Example Descriptions
================================================================================

This project contains three visual forms that were designed with the IDE's
GUI Builder. You can open these forms in the IDE, and you can view accompanying 
demos that show you how those forms can be created in the IDE.


To open an example form in the GUI Builder:

1) In the IDE's Projects window, navigate to the examples package node within the 
Source Packages directory.

2) Double-click the node of the sample form you want to view.

The IDE launches the GUI Builder and displays the chosen form.


Contact Editor
--------------

This complex form is similar to Windows dialogs typically used to display and 
edit database information. The example illustrates the full range of GUI Builder 
features, including alignment, anchoring, sizing, indentation, and runtime 
auto-resizing behavior. To view a detailed tutorial including flash 
demonstrations showing how to build this form, copy and paste the following link 
into your web browser http://netbeans.org/kb/60/java/quickstart-gui.html.

Antenna Preferences
-------------------

This example illustrates a type of table-based form commonly used to display 
related information in visually coherent groups. The GUI Builder's advanced 
alignment features enable you to group and size non-adjacent components (such as 
labels, text fields, and buttons) consistently without the need to merge cells
manually. 

Find
----

This simple form illustrates a straight-forward layout often used in various 
applications requiring basic search functionality. The GUI Builder's alignment 
and sizing features enable you to quickly construct such forms while ensuring 
that they localize predictably. 

