Change Log of JFormDesigner 2

See also: What's New in JFormDesigner 2


New Features

  • Runtime library: Added convenience methods to get menu components.

Bugs fixed

  • Fixed application freeze when using animated GIFs.
  • Fixed: Renaming button groups did not update references in menu bars.
  • Fixed ClassCastException when setting tile icon of MatteBorder to default.
  • Fixed in runtime library: Event handler methods not found in superclasses of target object.
  • Java code generator: Fixed exception when using a menu bar in a JFrame and "Set Component Names" property is true.
  • Java code generator: Fixed generation of uncompilable code when referencing a top-level component that is a nested class.
  • Minor bugs fixed.


Bugs fixed

  • Linux and Mac OS X: Fixed bug in Java parser which may partly corrupt generated code in case that the file contains multi-line comments with empty lines.
  • Java code generator: Do not generate component getter methods for local component variables.
  • Java code generator: Fixed missing import statement when using subclasses of Swing components.
  • Fixed look and feel problem regarding JIDE components.
  • Fixed ClassCastException when testing a form where a ButtonGroup is the first component.
  • Minor bugs fixed.


Bugs fixed

  • Localization: Do not auto-externalize excluded properties when editing properties.
  • Fixed NPE when using FormCreator with event handlers and removing another event listener.
  • Java code generator: Fixed missing import statement for java.awt.Toolkit in KeyStroke property editor.
  • Added some missing Java 5 properties to BeanInfos of java.awt.Container and java.awt.Window.
  • Mac OS X: Forward delete key works now as expected in text fields (in-place-editing, etc.).
  • Minor bugs fixed.


New Features

  • Assign "labelFor" property of labels in component context menu.
  • Allow remove or reassign of refactored or unknown properties.
  • Java code generator: Generate BorderFactory.createEmptyBorder() for empty EmptyBorders.

Bugs fixed

  • Marquee selection no longer selects invisible components in JTabbedPane and CardLayout.
  • Size of GridBagLayout panel too small in some situations.
  • Column/row headers not always updated when moving a panel.
  • Pasting non-visual beans may cause errors on save.
  • "Restore Default Value" in Properties view did not use the current look and feel.
  • Morphing did not remove read-only properties.
  • Fixed exception when using JMenuBar and WinLAF look and feel.
  • Java code generator: Fixed exception when using a menu bar and null layout in a JFrame.
  • Java code generator: Fixed generated event handler invocation code for the case that the listener interface has a method with the same name as the handler method.
  • Mac OS X: Command key now works as expected to add multiple components. No longer drops component to parent of container.


New Features

  • Simplified moving and resizing of JScrollPanes in Design view: now you click on the child of a JScrollPane and then move or resize the JScrollPane including its child component.
  • When morphing a bean from a non-scrollable component type to a scrollable component type, JFormDesigner asks to wrap the component in a JScrollPane.
  • Java code generator: Generation of getter methods for components.
  • Possibility to exclude properties from code generation. This is useful to exclude table, tree, etc. models, which are set for prototyping purposes, from code generation.
  • FormCreator: isSetComponentNames() and setSetComponentNames() added.

Bugs fixed

  • Couldn't add menu items to subclasses of JMenu.
  • Column/row grouping lines scroll out of visible area.
  • Grid of GridBagLayout panel shown in wrong location in some conditions.
  • Java code generator: Fixed line counting bug in parser on Linux, Mac OS X and other Unix systems when single-line comments contains multi-line comments.
  • Java code generator: Fixed wrong evaluation of custom code variable ${field} when using a member variable prefix.
  • Java code generator: Fixed wrong evaluation of custom code variable ${field_type} for JGoodies ComponentFactory components and nested classes.
  • Fixed painting problem in Design view when using Liquid look and feel.
  • Mac OS X: Increased row height of Properties view.


New Features

Design view

  • Menu designer: Visual design of menu bars and popup menus, in-place edit menu item texts and drag-and-drop menu items. The component palette contains a new category "Menus".
  • Internationalization support: externalize and internalize strings, edit resource bundles, add locales, switch locale used in Design view, in-place-edit text of current locale.
  • Support for events: Add and remove event handlers, generates handler methods, also usable with runtime library (see documentation of method FormCreator.setTarget() for details).
  • New "Morph Bean" command allows you to change the class of existing components without loosing properties, events or layout information.
  • Layout manager changing.
  • Marquee selection tool.
  • Auto-insert new columns/rows when dropping components on a gap column/row.
  • Auto-insert new columns/rows when adding or moving components outside of the existing grid.
  • Improved moving of multiple selected components.
  • Keep selection when moving components/columns/rows.
  • Column/row splitting introduced.
  • When adding a scrollable component, ask the user whether he wants to add a JScrollPane as well.
  • Made colors of feedback figures in Design view brighter.
  • Show tooltips when moving or resizing components.
  • Highlight occupied areas under the current mouse location when adding or moving components.
  • The Shift key now behaves the same as the Ctrl key while selecting components in the Design view.
  • Possibility to specify a "Default alignment" for components in a column/row of GridBagLayout and TableLayout (as already supported by FormLayout). This is e.g. very useful for columns with right aligned labels because you specify the alignment only once and all added labels will automatically aligned to the right.
  • Improved BorderLayout support when containing small sized children.
  • Improved JTabbedPane support: reorder tabs in Design view, insert new tabs before other tabs.
  • Support for GridLayout.
  • Support for CardLayout.
  • Support for JDesktopPane, JInternalFrame and JLayeredPane.
  • null layout manager support.
  • Support for non-visual JavaBeans.
  • java.beans.Customizer is now supported.
  • Support for right-to-left component orientation.

Structure view

  • Drag and drop components in tree, drop new components to tree.
  • Show events in tree.
  • Highlight the tree node of the component which is under the current mouse location in the Design view.
  • Show small overlay icons for component variable modifiers public, protected, default and private in Structure tree in case it is not the default modifier.
  • New tree root node "(form)". When selected, allows specification of form global options in Properties view.
  • "Expand All", "Collapse All" and "Hide Events" commands in toolbar.

Properties view

  • Allow property value modification of multiple selected components.
  • Remove property value when setting to the default.
  • Improved handling or null value in property editors.
  • "Restore Default Value" command enabled for Layout, Constraints and Code Generation properties.
  • "Set Value to null" command added to popup menu.
  • Added "Externalize String" and "Internalize String" commands to popup menu.
  • Mark localized strings with a small globe in the property value.
  • Show class hierarchy in tool tip of the "Class" property.
  • The combo box to assign a component to the JLabel.labelFor property no longer contains JLabels so that the component list is shorter, which makes it easier to find the target component.
  • Possibility to reference any (non-visual) JavaBean as a property value.
  • The SpinnerModel editor now supports javax.swing.SpinnerDateModel and javax.swing.SpinnerListModel.
  • Added property editor for java.awt.Cursor.
  • Added property editor for javax.swing.KeyStroke. Supports menu shortcut modifier key (Command key on Mac OS X, Ctrl key otherwise).
  • Improved border editor.
  • MatteBorder is now supported.
  • Show image dimensions and file size in icon editor.
  • Added "Insert Variable" button to custom Java code editors.
  • Improved error message of mnemonic property editor.
  • Remove property value references to removed components. E.g. when removing a ButtonGroup object then also the references to this object are removed.
  • Made "visible" property of java.awt.Component visible.
  • Made "toolBar" property of SimpleInternalFrame visible. Now you can add a JToolBar to the Design view and assign it to the SimpleInternalFrame in the Properties view.


  • Palette Manager allows the configuration of the component palette (add, edit, remove and rearrange categories and beans).
  • New "Choose Bean" dialog that allows to search for classes in the classpath, history and palette.
  • "Is Container" check box in "Choose Bean" dialog allows to specify whether a bean is a container or not.


  • Added support for custom Look and Feels.
  • Added support for custom column/row templates for FormLayout.
  • New preferences page "Localization" that allows the specification of properties, which should not externalized.
  • Allow editing of Source Folders and Classpath items.
  • Added "Edit" and "Insert Variable" buttons to Java code templates page.

Java code generator

  • Generate shorter GridBagConstraints code (pass all values to the constructor).
  • Added template for "Event Handler Body" to preferences.
  • Specification of member variable prefix for component variables.
  • Specification of default "Variable modifiers" and default "Use Local Variable" properties used for the whole form.
  • Specification of event handler method modifiers (public, protected, private, etc). You can also use "abstract", which is useful if you subclass form classes.
  • Possibility to generate code, which invokes java.awt.Component.setName() on all components. Works also in jfd-loader.jar.
  • Variables for component fields and types in custom code.
  • Modifier "static" for component variables.
  • Code generator can now write Eclipse non-nls tags (//$NON-NLS-n$) and NetBeans no-i18n tags (//NOI18N). Enable it in the Preferences dialog.
  • The Java code generator now orders the properties in the same order as you have set the properties in the Properties view. This makes sure that the generated code behaves the same as the "Test Form" command and solves problems where the property set order is important.
  • Improved speed of Java code generator about 15%.


  • Import NetBeans .form files. Either select "File > Import" from the main menu or drag .form files to the JFormDesigner window. When saving an imported NetBeans form, JFormDesigner replaces the NetBeans generated code with its own code. If using NetBeans, you should remove (and backup) the .form files. Otherwise, NetBeans would again replace the JFormDesigner generated code with its own code.
  • JBuilder plugin to convert jbInit() methods to JFormDesigner forms. Download:
  • Clipboard paste improved.
  • Changed keyboard shortcut for "Close" to "Ctrl+W" and "Close All" to "Ctrl+Shift+W".
  • Added "Browse..." buttons for choosing class names to several dialogs.
  • Linux: Added GNOME window decoration images.
  • Better support of dark color themes.
  • Possibility to specify persistence delegates (java.beans.PersistenceDelegate) for property values in property descriptors (java.beans.PropertyDescriptor). They are used while saving a form to a .jfd file.
  • Now using always the read and write methods specified in the property descriptors to get and set bean properties.
  • Improved error handling for "Test Form" command. You can now see the whole occurred exception in the Error Log view for easier analysis of the problem.
  • Show window size and inner size of "Test Form" frame in window title.
  • Improved exception handling when accessing BeanInfos.
  • JGradientPanel example bean added (see <jfd-install>/examples/src/com/jformdesigner/examples/beans/
  • New Windows setup with JRE 5.0 Update 5.
  • Updated JRE 1.4 in Windows setup to JRE 1.4.2_09.
  • Updated TableLayout.jar to latest release (2005-09-20). Added TableLayout-javadoc.jar.
  • Updated JGoodies Looks to 1.3.2.

Bugs fixed

  • Design view: Fixed preferred size calculation of GridBagLayout panels.
  • Design view: Improved performance of feedback figure painting.
  • Design view: Better auto-numbering of copied components.
  • Design view: Keep component sizes when moving components to null layout.
  • Design view: Fixed layout problem when adding a JScrollPane to FormLayout, GridBagLayout or TableLayout.
  • Design view: No longer caching icons used in forms.
  • Properties view: Fixed wrong display of DLU4_BORDER and DLU7_BORDER.
  • Properties view: Fixed minor problem in TableModel property editor.
  • Properties view: Removed option EXIT_ON_CLOSE from property JDialog.defaultCloseOperation.
  • Java code generator: Place "Post-Initialization Code" behind setting the layout manager.
  • Java code generator: Fixed import statement merging bug.
  • Java code generator: Fixed single-line comment recognition bug in parser.
  • Java code generator: Generate JSplitPane.setTopComponent() and setBottomComponent() when orientation is VERTICAL_SPLIT.
  • Java code generator: Fixed generation of Java code for alpha value of Color property values.
  • Java code generator: Fixed generation of Java code for bevelType of BevelBorder.
  • Fixed appearance of Ocean theme (Java 5).
  • Linux: Fixed appearance of JComboBox in Design view when using Ocean theme (Java 5).
  • Linux: Fixed NullPointerException and confusing "Open Form" error message when using "JGoodies Plastic" or "JGoodies Plastic XP" look and feels.
  • Splitter between palette and designer jumps to the left when showing or hiding the Error Log view.
  • Linux: No longer using GTK as application look and feel on GNOME desktops.
  • Windows: Fixed occasional problems with "short" (8+3) filenames when double-clicking .jfd files in Windows Explorer.
  • java.beans.Beans.isDesignTime() returns now always true. Previously, it returned false on "Test Form" command.
  • Fixed class loader problem regarding JIDE components.
  • Fixed class loader problem regarding l2fprod Common Components (requires 2005-01-30 release).
  • Fixed some memory leaks.

Important: The .jfd file format has changed in this release. It is still XML, but some class names and the structure has changed slightly. This release can read all .jfd files created with previous releases (1.0 and 2.0 EA), but always writes the new format. The new jfd-loader.jar runtime library can read old and new .jfd files. Also, the package names of the jfd-loader.jar classes has changed from com.ktauber.form.runtime to com.jformdesigner.runtime.