Version: 2.0.0

Dated: 08/10/2012




Java Docs
Screen Shots / Demo
Contact Us



SwingSet is an open source Java toolkit containing data-aware replacements for many of the standard Java Swing components.

The SwingSet feature-set includes:

  1. data-aware replacements for JTextField, JTextArea, JComboBox, JCheckBox, JLabel, JSlider, & JFormattedTextField
  2. binding of a "hidden" numeric column for combo boxes with text choices (e.g. 0, 1, & 2 are stored for "Yes," "No," & "Maybe," respectively)
  3. population of combo boxes based on columns in a database query (can also be used for combo box-based record navigation)
  4. a data-aware image component with support for JPEG & GIF image formats
  5. a graphical record navigator
    1. allows for database traversal, insertion, deletion, commit, and rollback
    2. supplies current record index (editable) and total record count
  6. a data grid component for creating datasheet/spreadsheet/table views of queries
    1. allows cut & paste to/from spreadsheet programs or other data grids
    2. allows custom column headings
    3. allows hiding of specified columns
    4. allows disabling of specified columns
    5. allows columns to be displayed as text boxes or combo boxes
    6. allows addition and deletion of records
    7. allows deletion of multiple, non-consecutive records
    8. allows data entry "masks" to be applied to text columns
  7. a serializable datasource abstraction layer
  8. 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 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 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 improvements.

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 decimals, etc.). Logo