SwingSet is an open source Java toolkit containing data-aware replacements for
many of the standard Java Swing components.
The SwingSet feature-set includes:
- data-aware replacements for JTextField, JTextArea, JComboBox, JCheckBox,
JLabel, JSlider, & JFormattedTextField
- binding of a "hidden" numeric column for combo boxes with text choices
(e.g. 0, 1, & 2 are stored for "Yes," "No," & "Maybe," respectively)
- population of combo boxes based on columns in a database query (can also
be used for combo box-based record navigation)
- a data-aware image component with support for JPEG & GIF image formats
- a graphical record navigator
- allows for database traversal, insertion, deletion, commit,
- supplies current record index (editable) and total record count
- a data grid component for creating datasheet/spreadsheet/table views of
- allows cut & paste to/from spreadsheet programs or other data grids
- allows custom column headings
- allows hiding of specified columns
- allows disabling of specified columns
- allows columns to be displayed as text boxes or combo boxes
- allows addition and deletion of records
- allows deletion of multiple, non-consecutive records
- allows data entry "masks" to be applied to text columns
- a serializable datasource abstraction layer
- JavaBean support for all major components
While there are several commercially available database components (controls, widgets, beans) that perform similar tasks, SwingSet is the first known open source solution.
To view SourceForge project summary page for SwingSet click here
SwingSet utilizes SSTextDocument, an extension of the standard
PlainDocument class to link the JTextField or JTextArea to a database
column within a RowSet. In addition, custom classes are provided to
replace the standard JComboBox and JCheckBox. The SSComboBox provides
an Access-like combobox that can be used to display user-specified
text choices based on an underlying numeric column (e.g. allows
my_table!choice_code, an integer column with valid values of 0, 1, &
2, to be displayed as "yes," "no," & "maybe"). The SSDBComboBox
operates in a similar fashion, but is used when both the values and
their corresponding text choices are stored in a table (e.g.
my_table!part_id is stored as a foreign key, but my_table!part_name is
displayed). By writing a custom event listener, SSDBComboBox may also
be used to navigate a RowSet based on a combobox selection. The
SSCheckBox allows a checkbox to be linked to an underlying numeric
database column. Finally, a SSDataNavigator class is provided to
allow traversal, insertion, deletion, commit, and rollback of a
RowSet. Changes to the current record are auto-committed when a
navigation takes place (also similar to Access).
SwingSet 2.0.0 Release has been long overdue, we are finally putting out a release after 6 years. Lot of new features have been added to enable developers to have more control on the components and different events. The SSDBComboBox now allows for filtering of items, making it easier to find the right item. SSDataGridHandler has been added to handle different events on the data grid, this is similar to the SSDBNav which handles the events for SSDataNavigator.
SwingSet 1.0.0 Preview Release 3 is the first new release of SwingSet in over a year. This release adds extra functions to SSDBNav interface to give more control to the programmer to create & manage different events on the DataNavigator. A number of new classes have also been added in the formatting package and work continues to finalize & document this package and its subpackages.
SwingSet 1.0.0 Preview Release 2 fixes a Java 1.5 issues with the SSDataNavigator, provides support for the TIMESTAMP sql data type, and supports JScrollPanes in SSDBNavImp so that component values are cleared properly for new records. This version drastically improves the behavior and functionality of keystoke based navigation in the SSDataGrid.
For SwingSet 1.0.0-PR1 the API & JavaDoc have undergone a major
rewrite for consistency. The image, label, slider, & formatting
classes are new for this release. A utility class called SSSyncManager
was also added for this release to simplify creation of screens with
both combo box-based and navigator-based navigation (see Example4.java
for an example).
Version 0.9.0-beta of SwingSet is a major release with an entirely new
datasource abstraction layer. Our goal for the 0.9.X series is to
focus on bug squashing and possibly some minor feature enhancements.
We hope to have a 1.0 production release by the end of 2004. See
http://swingset.sourceforge.net for a detailed list of features and
additional information. A Java Web Start version of the SwingSet demo
application is available from
The 0.8.3 release is the last planned release in the 0.8.X series. The 0.9.0 release will follow shortly and will contain a new serialized datasource abstraction layer. This will greatly facilitate serialization/deserialization of the various SwingSet components and will pave the way for SwingSet compatibility with non-updatable rowsets and other non-database datasources. Unfortunately, applications written for 0.8.X and earlier versions of SwingSet will require some small changes related to database connections and rowset objects in order to work with the 0.9.X and later versions. We will make every effort to constrain and minimize the required changes. The 0.8.3 release should supply developers with the latest fixes and provide the maximum migration time as 0.8.3 and 0.9.0 should be identical in all aspects other than the new datasource abstraction layer.
For version 0.8.0 all components have been made into Java Beans which
will allow for better integration with Java IDEs. As part of this,the
SwingSet components were serialized and the methods for accessing each
component were standardized across the toolkit. Major usability
enhancements include cut & paste support from the data grid to/from
spreadsheet programs and/or other data grids, addition of current
record index and total record count to the data navigator, and default
selection of an "empty" item for comboboxes. Finally, the 0.8.0
release includes a number of smaller bug fixes, enhancements, and code
Version 0.7.0 includes several usability enhancments and bug fixes, a
workaround for the mysql-connector-java MySQL JDBC driver, and a
graphical data navigator. See ChangeLog.txt for more information.
For the 0.6.0 release of SwingSet, a grid control, SSDataGrid, has
been added, which can display database information in a "datasheet" or
"spreadsheet" style view. SSDataGrid provides functions to set column
headers, hide columns, and make columns uneditable. In addition,
individual columns in the SSDataGrid can be displayed as either text
fields or comboboxes. For text columns, editing masks can be
specified. SSDataGrid uses the SSTableModel, which extends
AbstractTableModel. The SSCellEditing and SSDataValue interfaces
provide fine control over the working of the grid.
Also added in the 0.6.0 release of SwingSet is the SSTextField, which
extends the JTextField. The SSTextField provides editing masks for
data entry (e.g. dates, social security numbers, specified number of