JFCSuite is a collection of visual beans based on JFC and complementing it. It fills in missing pieces in the JDK/JFC GUI libraries, namely, masked (number-only, all upper case, etc.) entry fields, date/calendar controls, various extensions (sorting) on JTable and more. All components support the Java Look and Feel (JLF) and are 100% Pure Java certified. Although the licensing is per developer, there are no runtime license fees when the library is used in commercial products. The product is also available with enterprise (priority) support bundled, which may be a good choice if the components are relied on heavily in your UI. Detailed pricing information for subscription, source code and other options are available at
The product is available in a convenient InstallShield archive format for Winx and other environments. Before installing the product, you may want to have a quick glance at the "Before You Begin" chapter of the documentation that explains which JAR files belong to which version of JFC (pv* is for Java 1.x with JFC, pvx* for Java 2). To try the product, I installed the Java 2 beans into the visual builder palette (see Figure 1) of JBuilder 3. The one thing I thought was missing when I installed the beans to the palette is a "product" JAR file (containing all beans supplied) to save some clicks when adding the beans to the palette. All icons supplied by the pv*.jar files showed up right away in JBuilder, but only several of the pvx*.jar icons did. But after I restarted JBuilder, the palette contained all the right icons.
The beans provided customizer dialogs (see Figure 2) where appropriate, although some of them felt sluggish when I saved changes.
The documentation is extensive and well prepared. It links directly to the samples, describes how to add the beans to the palettes of different Java development environments (including JBuilder) and contains suggestions on how to deploy products with the library (including information on Java Plugin). It also describes different problems encountered using the visual builder tools and workarounds in the "Design Time Notes" section. Some of the functionality isn't available in visual fashion because of the different limitations of those environments. Other platform-dependent behaviors are also described in detail in the documentation.
The components provided are well blended into the JFC framework, providing a wealth of setter/getter methods, listeners, renderers, locale settings and look-and-feel settings. The components can also be tied to each other, providing even more functionality. A good example of this is the calendar component described below, which can be used as a stand-alone or as a drop-down from another entry field for date selections.
JFCDataCalendar (see Figure 3) is a calendar bean that allows a date or even date ranges to be selected using a "real-life" days-of-the-month display.
It can be used as a stand-alone or in conjunction with the JPVDatePlus date entry field to provide a drop-down date selector similar to the one in Quicken. The implementation even provides methods for manual placement of elements that could behave in a platform-dependent fashion. As can be seen in Figure 3, the days can be customized using images.
The JFCDataTable (see Figure 4), a drop-in replacement of the JTable component, adds sorting, printing, keyboard handling and advanced in-cell editing and formatting. The table component of this package actually subclasses from JTable, making it a true drop-in replacement.
The API has added convenience methods when compared to the JTable implementation. A "blended" scroll-and-table control is provided. Class inherits this from JScrollPane, but also implements the JTable methods.
JFCDataTree (see Figure 5) is again a true drop-in replacement for JTree, providing drag-and-drop, advanced keyboard handling, sorting, searching, node image customization and additional listeners.
A blended scroll-and-tree control is also available here.
JFCDataExplorer (see Figure 6) was likely inspired by the Windows Explorer UI. It ties together a JTree component with a JTable (or other components) inside a JSplitPane, allowing a display of hierarchical data structures on its left side and corresponding data on its right side. Please note that the component used to display the data on the right side, can be changed on a node-by-node basis, providing unlimited flexibility on a small screen's real estate.
Although JTable's data model can be used, a special data structure is also supplied, providing a richer information store.
JFCDataInput (JPVEdit, its subclasses and related classes; see Figure 7) offers rich data entry/validation beans. Functionality includes various masked entry fields (currency, [long] date, numeric, time) and several buttons (image, round, spin).
As for the other components above, various UI settings are offered for colors, fonts, borders, style, UI interaction timings, and so forth. The entry fields can be connected to the spin button supplied to provide a more mouse-friendly interface. I found it somewhat curious that the various masked entry fields aren't implemented using the JPVMask bean found in the package. Also, the need to have a JPVEdit superclass does seem to suggest that JFC was not as extensible as one might wish.
The JFC-style API and the extensive documentation supplied make the JFCSuite widgets a good choice if your UI needs the functionality described above.
At press time, ProtoView was scheduled to release version 3.0 to the JFC-Suite. This version will include a DayView component as well as advanced n-tier data models for data binding.
Gabor Liptak is an independent consultant with more
than 10 years of industry experience. He is currently
an architect of a Java e-commerce project.