Features

General

Easy and intuitive to use, powerful and productive JFormDesigner provides an easy-to-use but powerful user interface. The complexity of Java layout managers is hidden behind an intuitive WYSIWYG designer, easy to understand dialogs and powerful tools like column and row headers. This helps you to design high quality GUIs without deep knowledge of layout managers. Even non-programmers can use it, which makes JFormDesigner also ideal for prototyping.

IDE plug-ins and stand-alone application JFormDesigner is available as IDE plug-ins for Eclipse, IntelliJ IDEA and JBuilder and as stand-alone application. This gives you the flexibility to use several IDEs in your team and the possibility to switch to another IDE. Use JFormDesigner in your favorite IDE. Plug-ins for NetBeans and JDeveloper are under development.

The stand-alone application makes it ideal for prototyping and non-programmers because no heavyweight IDE is necessary to design GUIs.

WYSIWYG designer The state-of-the-art Design view is the central part of JFormDesigner. It lets you drag and drop components, resize components, etc. Design view features »

Design view

Standard and Open Source layout managers JFormDesigner supports all standard layout managers (GroupLayout, GridBagLayout, BorderLayout, etc.) and the popular and powerful open-source layout managers JGoodies FormLayout and Clearthought's TableLayout. This gives you the choice to use your favorite layout manager.

Menu designer The menu designer makes it easy to create and modify menu bars and popup menus. It supports in-place-editing menu texts and drag-and-drop menu items. The component palette category "Menus" contains all menu components.

View a flash demo here.

Menu designer

Localization support Localizing forms using properties files has never been easier. Specify a resource bundle and a prefix for keys when creating a new form and then forget about it. JFormDesigner automatically puts all strings into the specified resource bundle (auto-externalizing). It also updates resource keys when renaming components, copies resource strings when copying components and removes resource strings when deleting components. Modifications in properties files are done without loosing comments and without changing the order of keys.

You can also externalize and internalize strings, edit resource bundle strings, create locales, delete locales, switch locale used in Design view, in-place-edit text of current locale.

View a flash demo here.

Localized form

Support for events JFormDesigner supports adding and removing event handlers and generates empty handler methods. It shows events in the Structure view and event properties in the Properties view.

Add Event Handler menu

Based on JavaBeans standard JFormDesigner is based on the JavaBeans standard. It supports and uses BeanInfos, BeanDescriptors, PropertyDescriptors, PropertyEditors (incl. custom and paintable editors), Introspector, etc.

Standard and custom swing JavaBeans You can use all components that follow the JavaBeans standard. This includes standard Swing components (JButton, JLabel, etc.) and custom components (3rd party or own beans).

Java code generator or runtime library Either let JFormDesigner generate Java source code for your forms (the default) or use the open-source (BSD license) runtime library to load JFormDesigner XML files at runtime. Your choice.

Convert NetBeans, IntelliJ IDEA and Abeille forms JFormDesigner can convert NetBeans, IntelliJ IDEA and Abeille forms to JFormDesigner forms.

Stand-alone: Either select File > Import from the main menu or drag .form files to the JFormDesigner window. IDE plug-ins: Right-click on the form file and select Convert to JFormDesigner Form from the popup menu.

Convert JBuilder jbInit() methods JFDConverterOpenTool is a JBuilder X (or later) plugin to convert JBuilder forms (jbInit() methods) to JFormDesigner .jfd files. It analyzes the jbInit() method and converts as much as possible to a JFormDesigner form model and saves it to a .jfd file. Please download JFDConverterOpenTool here.

The JFormDesigner plug-in for JBuilder 2005 and 2006 also supports converting JBuilder forms (jbInit() methods) to JFormDesigner .jfd files.

Undo/redo and clipboard You can infinite undo and redo all operations. The clipboard allows you to copy/move one or more components.

Mac OS X support JFormDesigner is available as real Mac OS X application. It uses the application menu, the Command key in keyboard shortcuts, native file choosing dialogs and swaps the OK and Cancel buttons.

Mac OS X

Simple offline product activation To activate JFormDesigner, you receive a license key file that you select in JFormDesigner's registration dialog. That's all. No complicated online activation required. No private data transfered to us.

Layout Managers

JGoodies FormLayout JFormDesigner provides outstanding support for JGoodies FormLayout. This includes column/row specifications (alignment, size, resize behavior), IntelliGap technology (automatically handles gap columns/rows) and column/row grouping (makes widths/heights equal). Other parts of the JGoodies Forms framework are also supported (DLU borders, component factory).

FormLayout

GroupLayout (Free Design) Support for GroupLayout brings the "Free Design" paradigm to JFormDesigner. You can lay out your forms by simply placing components where you want them. Visual guidelines suggest optimal spacing, alignment and resizing of components. This makes it easy to design professional-looking GUIs.

GroupLayout

GroupLayout has been developed by the NetBeans team and is also used by the NetBeans GUI Builder (formerly Project Matisse).

Clearthought's TableLayout JFormDesigner supports all features of TableLayout and extends it with default component alignments.

TableLayout

Advanced GridBagLayout The advanced GridBagLayout support allows the specification of horizontal and vertical gaps (as in TableLayout). This makes it very easy to design forms with consistent gaps using GridBagLayout. No longer wrestling with GridBagConstraints.insets. You can also left/top align the whole grid.

View a flash demo here.

With gaps and left/top
aligned grid:
Pure GridBagLayout without
gaps and grid alignment:
   

Standard layout managers JFormDesigner supports following standard layout managers: BorderLayout, BoxLayout, CardLayout, FlowLayout, GroupLayout (Java 6), GridBagLayout and GridLayout.

SwingX layout managers Support for SwingX layout managers HorizontalLayout and VerticalLayout makes it easier to use SwingX components (like JXTaskPaneContainer and JXCollapsiblePane) in JFormDesigner.

null layout manager support The null Layout allows you to make quick prototypes. null layout is not a real layout manager. It means that no layout manager is assigned and the components can be put at specific x,y coordinates. JFormDesigner's null layout implementation supports preferred component sizes, grid snapping, aligning components and is able to compute the preferred size of the container.

null Layout

Layout manager changing Layout manager changing allows you to change the layout manager used by a container without loosing child components. The layout is converted to the new layout manager as good as possible. Right-click on a container in the Design or Structure view and select Set Layout Manager from the popup menu and choose the new layout manager.

Default alignment in GridBagLayout and TableLayout Allows you to specify a default alignment for components within columns/rows in GridBagLayout and TableLayout (as in FormLayout). This is very useful for columns with right aligned labels because you specify the alignment only once for the column and all added labels will automatically aligned to the right


Custom column/row templates for FormLayout If the predefined FormLayout column/row templates does not fit to your needs, you can define your own column/row templates in the FormLayout preferences.

Custom column/row templates

Design View

Design view The Design view is the central part of JFormDesigner. It lets you drag and drop components, resize components, select components, insert/delete/move columns or rows and in-place-edit texts.

Design view

Animated transitions Animated transitions on layout changes in Design view are not just cool, they also help you to better see what happens on changes.



Extensive visual feedback During drag and drop, you see exactly where a component will be placed before dropping it. This makes it much easier to hit the right location.

Visual feedback

Column and row headers Column and row headers (for grid based layout managers) show the structure of the layout (including column/row indices, alignment, growing, grouping) and allow you to insert or delete columns/rows and change column/row properties. It's also possible to drag and drop columns/rows (incl. contained components and gaps). This allows you to swap columns or move rows in seconds.

Headers   red columns/rows

Insert and delete columns/rows The headers allow you to insert and delete columns/rows in grid based layout managers. Right-click on the column/row and select a command.

Insert column

Auto-insert columns/rows Besides using "Insert Column" or "Insert Row" from the column/row header popup menu, you can insert new columns/row when dropping components on column/row gaps or outside of the existing grid.

Auto-insert row between   Auto-insert row virtual

In the first figure, a new row will be inserted between existing rows. In the second figure, a virtual grid is shown below/right to the existing grid and a new row will be added.

Resizing of columns/rows You can now use the headers to change the (minimum) size of a column/row. Click near the right edge of a column/row and drag it.

Resize Column

Moving columns/rows The headers allow you to drag and drop columns/rows (incl. contained components and gaps). This allows you to swap columns or move rows in seconds. Click on a column or row and drag it to the new location. JFormDesigner updates the column/row specification and the locations of the moved components.

Move row

Moving multiple selected components JFormDesigner allows you to drag and drop multiple selected components at once in the Design view in all layout managers. The layout constraints are preserved where possible.

Move multiple components

Tooltips when moving or resizing components Tooltips when moving or resizing components show you detailed information about the insert location, the new size and the size differences.

Resize tooltip

Nest in Container The "Nest in Container" command allows you to nest selected components in a new container (usually a JPanel). Right-click on a component in the Design or Structure view and select Nest in JPanel from the popup menu. The new container gets the same layout manager as the old container and is placed at the same location where the selected components were located. For grid-based layout managers, the new container gets columns and rows and the layout constraints of the selected components is preserved.

Nest in Container (Before)   Nest in Container (After)

In-place-editing In-place-editing allows you to edit the text of labels and other components directly in the Design view. Simply select a component and start typing. JFormDesigner automatically displays a text field that allows you to edit the text. In-place-editing is also supported for the title of TitledBorder and the tab titles of JTabbedPane.

   In-place-editing


Keyboard navigation Keyboard navigation allows you to change the selection in the designer view using the keyboard. This allows you for example to edit a bunch of labels using in-place-editing without having to use the mouse.

Button group visualization Button groups (javax.swing.ButtonGroup) are used in combination with radio buttons to ensure that only one radio button in a group of radio buttons is selected. To visualize the grouping, JFormDesigner displays lines connecting the grouped buttons when the mouse cursor is over a button.

Button Groups

JTabbedPane support JFormDesigner makes it easy to create and manage JTabbedPanes. You can add new tabs by dropping panels on the tabs area, click on tabs to select them (and see the tab page components), double-click on a tab to in-place-edit its title, edit other tab properties (tool tip text, icon, ...) in the Properties view and reorder tabs by dragging a page component over the tabs area. The visual feedback shows the insert location and the tooltip the tab index. You can also drag and drop page components in the Structure view to change its order.

Add page   Change tab order

Marquee selection tool The marquee selection tool allows you to select components in a rectangular area. Select Marquee Selection in the Palette and click-and-drag a rectangular selection area in the Design view. Or click-and-drag on the free area in the Design view. All components that lie partially within the selection rectangle are selected.

Marquee selection

Morph Bean The "Morph Bean" command allows you to change the class of existing components without loosing properties, events or layout information. Right-click on a component in the Design or Structure view and select Morph Bean from the popup menu.

Non-visual JavaBeans To add a non-visual bean to a form, select it in the Palette (or use Choose Bean) and drop it into the free area of the Design view. Non-visual beans are shown in the Design view using proxy components.

Non-visual JavaBean

Baseline alignment
(Java 6)
Baseline alignment, which was introduced to GridBagLayout and FlowLayout in Java 6, is supported. Components are vertically aligned along the baseline of the prevailing row.

Baseline alignment

Right-to-left component orientation Right-to-left component orientation is supported in the Design view for all layout managers that support it.

Right-to-left

Look and Feel switching Allows you to change the look and feel of the components in the Design view.

Look and Feel switching

JGoodies Look and Feels JGoodies Looks look and feels are built-in so that you can design and preview your forms using those popular look and feels.

Custom Look and Feels Use your favorite look and feel in the Design view. Add it on the Look and Feels preferences page.

Look and feel

Squint Test Simulates evaluating a graphic layout by squinting your eyes. This tests legibility and whether the overall layout is a strong, clear layout. You can change the squint intensity in the Squint Test preferences.

Squint Test

Palette

Palette PaletteThe component palette provides quick access to commonly used Swing components (JavaBeans) available for adding to forms. The palette contains all standard Swing components and some JGoodies components. The components are organized in categories. You can add own categories and custom beans to the palette.

Palette customization Palette popup menuThe component palette is fully customizable. Right-click on the palette to add, edit, remove or reorder components and categories. Or use the Palette Manager dialog.

Comfortable bean chooser dialog The Choose Bean dialog allows you to search for classes in the classpath, history and palette. You can also specify whether a bean is a container or not and add the chosen bean to the palette.

Choose Bean dialog

The "JARs" tab allows you to select classes that are marked as JavaBean in the JAR's manifest. The provider of the component JAR can mark some classes as JavaBean in the manifest file. Popular 3rd party component libraries like MiG Calendar or JIDE components use this to make it easier to find the few classes, which can be used in GUI builders, in libraries that contain hundreds of classes.

Structure View

Structure view The Structure view displays the hierarchical structure of the components in a form and its events.

Structure view

Drag and drop in Structure view The Structure view supports drag and drop to rearrange components. You can also add new components from the palette to the Structure view. Besides the feedback indicator in the structure tree, JFormDesigner also displays a green feedback figure in the Design view to show the drop location.

Structure view: Drag and drop

Properties View

Properties view The Properties view displays and lets you edit the properties of the selected component(s). Different font styles and backgrounds help you to find often used properties and see modified values.

Properties view

Comfortable property editors JFormDesigner provides comfortable dialog based property editors for Border, Color, ComboBoxModel, Dimension, Font, Icon, Insets, KeyStroke, ListModel, Point, Rectangle, SpinnerModel, TableModel, TreeModel and all standard data types (String, int, long, etc.).

KeyStroke editor

Relative font specification Derived fonts are computed based on the default font of the component (from the current look and feel). They are recommended if you just need a bold/italic or a larger/smaller font (e.g. for titles) because they are platform independent. If your application runs on several look and feels (e.g. several operating systems), derived fonts ensure that the font family stays consistent.

In the Properties view, you can quickly change the style (bold and italic) and the size of the font.

Font editor

In the custom editor you can choose one of the tabs to specify either absolute fonts, derived fonts or fonts defined in the look and feel.

Derived Font editor

Multi-selection property editing The Properties view supports editing properties of multiple selected components.

Properties: multi-selection

Client properties support You can use client properties. They can be defined in the Client Properties preferences and set in the Properties view.

Client Properties

Error Log View

Error Log view JFormDesigner catches exceptions thrown by beans and displays them in the Error Log view. You can see which bean causes the problem and the stack trace of the exception. This makes it much easier to solve problems when using your own (or 3rd party) beans. Reloading beans allows you to modify beans and reload them without restarting JFormDesigner.

Error Log view

Java Code Generator

Java code generator JFormDesigner can generate and update Java source code. It uses the same name for the Java file as for the Form file. E.g.:

C:\MyProject\src\com\myproject\WelcomeDialog.jfd (form file)
C:\MyProject\src\com\myproject\WelcomeDialog.java (java file)

Note: If you use the runtime library, you can disable the code generator in the Java Code Generator preferences.

Generation of nested classes The Java code generator is able to generate and update nested classes. You can specify a class name for each component in your form. This allows you to organize your source code in an object-oriented way.

Code templates When generating new Java files, nested classes or event handlers, JFormDesigner uses code templates specified in the Templates preferences.

Java 5 support The Java code generator can generate source code that uses Java 5 language features (e.g. auto-boxing, @Override, etc). You can also use Java 5 enums as property values and set annotations for component variables.

Generate Eclipse or NetBeans non-nls tags The Java code generator can write Eclipse non-nls tags (//$NON-NLS-n$) and NetBeans no-i18n tags (//NOI18N). Enable it in the Java Code Generator preferences.

Runtime Library

Open-source runtime library The open-source (BSD license) runtime library allows you to load JFormDesigner XML files at runtime within your applications. Turn off the code generation in the Preferences dialog if you use this library.

Note: If you use the Java code generator, you don't need this library.