Skip to main content project has been moved over to Kenai infrastructure. As a consequence SwingLabs and subs have seemingly empty download dirs - nevertheless, all old stuff is there, for a bare-bones view goto (replace the actual project name for any of the others) Note: most links in the content of this page are broken ...

The JDesktop Network Components (JDNC) Incubator project is a place to share prototype code related to the JDNC project.  This is the place for community members to try out and refine new ideas.   As these ideas mature, the hope is that they can be incorporated into the JDNC project or, if appropriate, spun off into their own projects.

This page describes the procedures for contributing to the JDNC Incubator project.  They are designed around two simple goals:
  • It should be as easy as possible to contribute to the Incubator project
  • It should be as easy as possible to move code from the Incubator to the main project

Check out our most current documentation on the SwingLabs Wiki page. Want to help with SwingLabs? Read about how to join the SwingLabs movement, and help us build the future of Swing!.

Incubator Demos

Some incubator demos are runnable via Java WebStart:
DemoAuthorCommentForum Discussion
Column Group Erik Vickroy Column group
Quick Searcher Panel Gilles Philippart & Patrick Wright Quick Search Panel
ScrollPane Selector Pierre Le Lannic ScrollPane Selector
WhiteBoard Pierre Le Lannic WhiteBoard
ListView Rob Stone Provides the basics of a ListView (Windows Explorer style) component. JXListView
SwingxTris Rob Stone Tetris in a JXTable ! SwingxTris
AsynchronousFilter Bryan Young Filtering that doesn't block the event queue AsynchronousFilter
Custom Column Control Jeanette Winzenburg Use Dialogs with List/s of Columns
TaskPaneRenderer Jeanette Winzenburg Live rollover effects
JXCheckList Rob Stone Checkable list box JXCheckList
SwingXtreme Renderer Jeanette Winzenburg Using xtreme renderers across components
AlbumBrowser Jeanette Winzenburg SwingLabs in Action: SwingX, AppFramework and BeansBinding combined to implement M. Fowler's example for organizing presentation logic with the Presentation Model Pattern
JXTabbedPane Demo Mario Cesar Mancinelli de Araujo JTabbedPane with closable and vertical text capabilities
JXLabel Demo Mario Cesar Mancinelli de Araujo JLabel with rotated texts and some background options
JXSplitButton Demo Mario Cesar Mancinelli de Araujo A SplitButton (or DropDownButton) like that extends JButton
JXDatePicker Demo Joshua Outwater & Markus Zehnder Enhanced JXDatePicker with a DateFormatter to allow spinning through date fields with the cursor keys
SeparatedTableModel Demo Miguel Muñoz Generic TableModel that separates data into distinct row and column models. This makes TableModels much easier to maintain. You may also check out the javadocs.
JXTablePanel DemoAC de SouzaA JXTable created by a List that show some features like plot charts and export to excel.. JXTablePanel
JXSplitTable and JXTwoLevelSplitTable demos
(Executable jar variant)
Hans Oesterholt This demo shows a JXTable with a left part and a right part that is scrolled synchronously vertically. And it gives a JXSplitTable that has two levels per row, i.e. a row can be "opened" and "closed". Still, it's not a tree.
JXMLNote demos
(Executable jar variant)
Hans Oesterholt This demo gives a rich text editor, that doesn't depend on the HTMLEditorKit, is much more reliable in it's behaviour than it's HTMLEditorKit counterpart and gives a lot more control over the document, clipboard, markers, etc.
Extended Calendar Demo
Jeanette Winzenburg Sneak Preview of a "Vista-style" Calendar component

Gaining Access

There are no observers for the JDNC Incubator project - just developers. To gain developer access to the Incubator project simply sign and submit a Joint Copyright Assignment (JCA). A signed JCA makes it possible to eventually move Incubator code into the main JDNC project. Print, complete, sign and submit it. Note: currently the only reliable way to submit it is to email a digitized version of the document directly to Richard Bair. His email is the typical [firstname].[lastname] at sun dot com. Do not follow the instructions on the form! Once a JCA has been received and processed, we will automatically grant developer access to the Incubator project for the user id indicated on the JCA.

Incubator Project Etiquette

Once you have developer access to the Incubator project, you are free to contribute and develop code in a package named with your id.   You then become the owner of this package.  Instructions for how you construct packages names from your user id are described in the README file found at the root of the project's repository.  This README also describes where your files should be placed in the repository, how to use the project's build infrastructure and other important requirements.

Developer access to the Incubator project also allows you to make changes in the packages owned by others.  You may do this, but only after receiving permission from the package's owner.  The Incubator project is all about sharing ideas, but please be courteous and respect the wishes of the package owner.  Package owners can be known from the owner's id in the package name.
In an Incubator package that you own, feel free to experiment with whatever aspect of JDNC interests you.  Your work should, however, remain relevant to the overall vision and goals of the JDNC project.  If the community decides an Incubator project is not relevant to JDNC, we will encourage you to find a more appropriate home on

Code committed to the Incubator should follow the coding conventions of the JDNC project.  Files should begin with the copyright notice.  You, of course, retain rights to code you contribute as specified by the JCA.  Finally, where practical, code committed to the repository should include JUnit tests and a demo program that shows off your work. Ideally the demos should be runnable via Java WebStart so users don't have to build your code to see the results.


Please Confirm