com.jgoodies.forms.builder

## Class DefaultFormBuilder

- java.lang.Object
- - com.jgoodies.forms.builder.AbstractBuilder
  - - com.jgoodies.forms.builder.AbstractFormBuilder
    - - com.jgoodies.forms.builder.PanelBuilder
      - - com.jgoodies.forms.builder.I15dPanelBuilder
        - - com.jgoodies.forms.builder.DefaultFormBuilder

-     public final class DefaultFormBuilder
      extends I15dPanelBuilder

  Provides a means to build form-oriented panels quickly and consistently using the `FormLayout`. This builder combines frequently used panel building steps: add a new row, add a label, proceed to the next data column, then add a component.

  The extra value lies in the `#append` methods that append gap rows and component rows if necessary and then add the given components. They are built upon the superclass behavior `#appendRow` and the set of `#add` methods. A set of component appenders allows to add a textual label and associated component in a single step.

  This builder can map resource keys to internationalized (i15d) texts when creating text labels, titles and titled separators. Therefore you must specify a `ResourceBundle` in the constructor. The builder methods throw an `IllegalStateException` if one of the mapping builder methods is invoked and no bundle has been set.

  You can configure the build process by setting a leading column, enabling the row grouping and by modifying the gaps between normal lines and between paragraphs. The leading column will be honored if the cursor proceeds to the next row. All appended components start in the specified lead column, except appended separators that span all columns.

  It is temptive to use the DefaultFormBuilder all the time and to let it add rows automatically. Use a simpler style if it increases the code readability. Explicit row specifications and cell constraints make your layout easier to understand - but harder to maintain. See also the accompanying tutorial sources and the Tips & Tricks that are part of the Forms documentation.

  Sometimes a form consists of many standardized rows but has a few rows that require a customization. The DefaultFormBuilder can do everything that the superclasses `AbstractFormBuilder` and `PanelBuilder` can do; among other things: appending new rows and moving the cursor. Again, ask yourself if the DefaultFormBuilder is the appropriate builder. As a rule of thumb you should have more components than builder commands. There are different ways to add custom rows. Find below example code that presents and compares the pros and cons of three approaches.

  The texts for labels and titles can be marked texts, i.e. strings with an optional mnemonic marker. See the `MnemonicUtils` class comment for details.

  Example:

       public void build() {
           FormLayout layout = new FormLayout(
               "right:max(40dlu;pref), 3dlu, 80dlu, 7dlu, " // 1st major colum
             + "right:max(40dlu;pref), 3dlu, 80dlu",        // 2nd major column
               "");                                         // add rows dynamically
           DefaultFormBuilder builder = new DefaultFormBuilder(layout)
                      .border(Borders.DIALOG);

           builder.appendSeparator("Flange");

           builder.append("Identifier", identifierField);
           builder.nextLine();

           builder.append("PTI [kW]",   new JTextField());
           builder.append("Power [kW]", new JTextField());

           builder.append("s [mm]",     new JTextField());
           builder.nextLine();

           builder.appendSeparator("Diameters");

           builder.append("da [mm]",    new JTextField());
           builder.append("di [mm]",    new JTextField());

           builder.append("da2 [mm]",   new JTextField());
           builder.append("di2 [mm]",   new JTextField());

           builder.append("R [mm]",     new JTextField());
           builder.append("D [mm]",     new JTextField());

           builder.appendSeparator("Criteria");

           builder.append("Location",   buildLocationComboBox());
           builder.append("k-factor",   new JTextField());

           builder.appendSeparator("Bolts");

           builder.append("Material",   ViewerUIFactory.buildMaterialComboBox());
           builder.nextLine();

           builder.append("Numbers",    new JTextField());
           builder.nextLine();

           builder.append("ds [mm]",    new JTextField());
       }

  Custom Row Example:

       public JComponent buildPanel() {
           initComponents();

           FormLayout layout = new FormLayout(
                   "right:pref, 3dlu, default:grow",
                   "");
           DefaultFormBuilder builder = new DefaultFormBuilder(layout)
                  .border(Borders.DIALOG)
                .rowGroupingEnabled(true);

           // In this approach, we add a gap and a custom row.
           // The advantage of this approach is, that we can express
           // the row spec and comment area cell constraints freely.
           // The disadvantage is the misalignment of the leading label.
           // Also the row's height may be inconsistent with other rows.
           builder.appendSeparator("Single Custom Row");
           builder.append("Name", name1Field);
           builder.appendLineGapRow();
           builder.appendRow(RowSpec.decode("top:31dlu")); // Assumes line is 14, gap is 3
           builder.nextLine(2);
           builder.append("Comment");
           builder.add(new JScrollPane(comment1Area),
                       CC.xy(builder.getColumn(), builder.getRow(), "fill, fill"));
           builder.nextLine();

           // In this approach, we append a standard row with gap before it.
           // The advantage is, that the leading label is aligned well.
           // The disadvantage is that the comment area now spans
           // multiple cells and is slightly less flexible.
           // Also the row's height may be inconsistent with other rows.
           builder.appendSeparator("Standard + Custom Row");
           builder.append("Name", name2Field);
           builder.append("Comment");
           builder.appendRow(RowSpec.decode("17dlu")); // Assumes line is 14, gap is 3
           builder.add(new JScrollPane(comment2Area),
                       CC.xywh(builder.getColumn(), builder.getRow(), 1, 2));
           builder.nextLine(2);

           // In this approach, we append two standard rows with associated gaps.
           // The advantage is, that the leading label is aligned well,
           // and the height is consistent with other rows.
           // The disadvantage is that the comment area now spans
           // multiple cells and is slightly less flexible.
           builder.appendSeparator("Two Standard Rows");
           builder.append("Name", name3Field);
           builder.append("Comment");
           builder.nextLine();
           builder.append("");
           builder.nextRow(-2);
           builder.add(new JScrollPane(comment3Area),
                       CC.xywh(builder.getColumn(), builder.getRow(), 1, 3));

           return builder.build();
       }

  TODO: Consider adding a method for appending a component that spans the remaining columns in the current row. Method name candidates are `#appendFullSpan` and `#appendRemaining`.

  Since:
    1.0.3
  Version:
    $Revision: 1.16 $
  Author:
    Karsten Lentzsch
  See Also:
    `AbstractFormBuilder`, `FormSpecs`, `FormLayout`

- - ### Field Summary

    - ### Fields inherited from class com.jgoodies.forms.builder.AbstractBuilder

      `currentCellConstraints`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultFormBuilder(FormLayout layout)` Constructs a `DefaultFormBuilder` for the given layout.
    `DefaultFormBuilder(FormLayout layout, JPanel container)` Constructs a `DefaultFormBuilder` for the given layout and panel.
    `DefaultFormBuilder(FormLayout layout, ResourceBundle bundle)` Constructs a `DefaultFormBuilder` for the given layout and resource bundle.
    `DefaultFormBuilder(FormLayout layout, ResourceBundle bundle, JPanel container)` Constructs a `DefaultFormBuilder` for the given layout, resource bundle, and panel.
    `DefaultFormBuilder(FormLayout layout, com.jgoodies.common.internal.StringResourceAccessor localizer)` Constructs a `DefaultFormBuilder` for the given layout and resource bundle.
    `DefaultFormBuilder(FormLayout layout, com.jgoodies.common.internal.StringResourceAccessor localizer, JPanel container)` Constructs a `DefaultFormBuilder` for the given layout, resource bundle, and panel.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `append(Component component)` Adds a component to the panel using the default constraints with a column span of 1.
    `void` | `append(Component c1, Component c2)` Adds two components to the panel; each component will span a single data column.
    `void` | `append(Component c1, Component c2, Component c3)` Adds three components to the panel; each component will span a single data column.
    `void` | `append(Component component, int columnSpan)` Adds a component to the panel using the default constraints with the given columnSpan.
    `JLabel` | `append(String textWithMnemonic)` Adds a text label to the panel and proceeds to the next column.
    `JLabel` | `append(String textWithMnemonic, Component component)` Adds a text label and component to the panel.
    `JLabel` | `append(String textWithMnemonic, Component c, boolean nextLine)` Adds a text label and component to the panel; the component will span the specified number columns.
    `JLabel` | `append(String textWithMnemonic, Component c1, Component c2)` Adds a text label and two components to the panel; each component will span a single column.
    `JLabel` | `append(String textWithMnemonic, Component c1, Component c2, Component c3)` Adds a text label and three components to the panel; each component will span a single column.
    `JLabel` | `append(String textWithMnemonic, Component c1, Component c2, Component c3, Component c4)` Adds a text label and four components to the panel; each component will span a single column.
    `JLabel` | `append(String textWithMnemonic, Component c1, Component c2, int colSpan)` Adds a text label and two components to the panel; each component will span a single column.
    `JLabel` | `append(String textWithMnemonic, Component c, int columnSpan)` Adds a text label and component to the panel; the component will span the specified number columns.
    `JLabel` | `appendI15d(String resourceKey)` Adds an internationalized (i15d) text label to the panel using the given resource key and proceeds to the next column.
    `JLabel` | `appendI15d(String resourceKey, Component component)` Adds an internationalized (i15d) text label and component to the panel.
    `JLabel` | `appendI15d(String resourceKey, Component component, boolean nextLine)` Adds an internationalized (i15d) text label and component to the panel.
    `JLabel` | `appendI15d(String resourceKey, Component c1, Component c2)` Adds an internationalized (i15d) text label and two components to the panel; each component will span a single column.
    `JLabel` | `appendI15d(String resourceKey, Component c1, Component c2, Component c3)` Adds an internationalized (i15d) text label and three components to the panel; each component will span a single column.
    `JLabel` | `appendI15d(String resourceKey, Component c1, Component c2, Component c3, Component c4)` Adds an internationalized (i15d) text label and four components to the panel; each component will span a single column.
    `JLabel` | `appendI15d(String resourceKey, Component c1, Component c2, int colSpan)` Adds an internationalized (i15d) text label and two components to the panel; each component will span a single column.
    `JLabel` | `appendI15d(String resourceKey, Component c, int columnSpan)` Adds an internationalized (i15d) text label to the panel using the given resource key; then proceeds to the next data column and adds a component with the given column span.
    `JComponent` | `appendI15dSeparator(String resourceKey)` Appends an internationalized titled separator for the given resource key that spans all columns.
    `JLabel` | `appendI15dTitle(String resourceKey)` Adds an internationalized title label to the panel and proceeds to the next column.
    `void` | `appendLineGapRow()` Appends a row with this builder's line gap size.
    `JComponent` | `appendSeparator()` Adds a separator without text that spans all columns.
    `JComponent` | `appendSeparator(String text)` Adds a separator with the given text that spans all columns.
    `JLabel` | `appendTitle(String textWithMnemonic)` Adds a title label to the panel and proceeds to the next column.
    `DefaultFormBuilder` | `background(Color background)` Sets the panel's background color and the panel to be opaque.
    `DefaultFormBuilder` | `border(Border border)` Sets the panel's border.
    `DefaultFormBuilder` | `border(String emptyBorderSpec)` Sets the panel's border as an EmptyBorder using the given specification for the top, left, bottom, right in DLU.
    `DefaultFormBuilder` | `defaultRowSpec(RowSpec defaultRowSpec)` Sets the row specification that shall be used for component rows.
    `RowSpec` | `getDefaultRowSpec()` Deprecated. Obsolete; will be deleted from the next version
    `protected int` | `getLeadingColumn()` Returns the leading column.
    `int` | `getLeadingColumnOffset()` Deprecated. Obsolete; will be deleted from the next version
    `RowSpec` | `getLineGapSpec()` Deprecated. Obsolete; will be deleted from the next version
    `boolean` | `isRowGroupingEnabled()` Deprecated. Obsolete; will be deleted from the next version
    `DefaultFormBuilder` | `leadingColumnOffset(int columnOffset)` Sets the offset of the leading column, often 0 or 1.
    `DefaultFormBuilder` | `lineGapSize(ConstantSize lineGapSize)` Sets the size of gaps between component lines using the given constant size.
    `DefaultFormBuilder` | `opaque(boolean b)` Sets the panel's opaque state.
    `DefaultFormBuilder` | `paragraphGapSize(ConstantSize paragraphGapSize)` Sets the size of gaps between paragraphs using the given constant size.
    `DefaultFormBuilder` | `rowGroupingEnabled(boolean enabled)` Enables or disables the grouping of new data rows.
    `void` | `setDefaultRowSpec(RowSpec defaultRowSpec)` Deprecated. Replaced by `defaultRowSpec(RowSpec)`
    `void` | `setLeadingColumnOffset(int columnOffset)` Deprecated. Replaced by `leadingColumnOffset(int)`
    `void` | `setLineGapSize(ConstantSize lineGapSize)` Deprecated. Replaced by `lineGapSize(ConstantSize)`
    `void` | `setParagraphGapSize(ConstantSize paragraphGapSize)` Deprecated. Replaced by `lineGapSize(ConstantSize)`
    `void` | `setRowGroupingEnabled(boolean enabled)` Deprecated. Replaced by `rowGroupingEnabled(boolean)`

    - ### Methods inherited from class com.jgoodies.forms.builder.I15dPanelBuilder

      `addI15dLabel, addI15dLabel, addI15dLabel, addI15dROLabel, addI15dROLabel, addI15dROLabel, addI15dSeparator, addI15dSeparator, addI15dTitle, addI15dTitle, debugToolTipsEnabled, focusTraversal, getResourceString, isDebugToolTipsEnabled`

    - ### Methods inherited from class com.jgoodies.forms.builder.PanelBuilder

      `add, add, addLabel, addLabel, addLabel, addLabel, addROLabel, addROLabel, addROLabel, addROLabel, addSeparator, addSeparator, addSeparator, addSeparator, addTitle, addTitle, addTitle, build, getPanel, isLabelForApplicable, labelForFeatureEnabled, setBorder, setDefaultDialogBorder, setLabelFor, setOpaque`

    - ### Methods inherited from class com.jgoodies.forms.builder.AbstractFormBuilder

      `add, add, appendColumn, appendColumn, appendGlueColumn, appendGlueRow, appendLabelComponentsGapColumn, appendParagraphGapRow, appendRelatedComponentsGapColumn, appendRelatedComponentsGapRow, appendRow, appendRow, appendUnrelatedComponentsGapColumn, appendUnrelatedComponentsGapRow, cellConstraints, createLeftAdjustedConstraints, getColumn, getColumnIncrementSign, getRow, isLeftToRight, nextColumn, nextColumn, nextLine, nextLine, nextRow, nextRow, setAlignment, setBounds, setColumn, setColumnSpan, setExtent, setHAlignment, setLeftToRight, setOrigin, setRow, setRowSpan, setVAlignment`

    - ### Methods inherited from class com.jgoodies.forms.builder.AbstractBuilder

      `createComponentFactory, getColumnCount, getComponentFactory, getContainer, getLayout, getRowCount, setComponentFactory`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DefaultFormBuilder

          public DefaultFormBuilder(FormLayout layout)

      Constructs a `DefaultFormBuilder` for the given layout.
      Parameters:
        `layout` - the `FormLayout` to be used
      Throws:
        `NullPointerException` - if `layout` is `null`

    - #### DefaultFormBuilder

          public DefaultFormBuilder(FormLayout layout,
                            JPanel container)

      Constructs a `DefaultFormBuilder` for the given layout and panel.
      Parameters:
        `layout` - the `FormLayout` to be used
        `container` - the layout container
      Throws:
        `NullPointerException` - if `layout` or `container` is `null`

    - #### DefaultFormBuilder

          public DefaultFormBuilder(FormLayout layout,
                            ResourceBundle bundle)

      Constructs a `DefaultFormBuilder` for the given layout and resource bundle.
      Parameters:
        `layout` - the `FormLayout` to be used
        `bundle` - the `ResourceBundle` used to lookup i15d strings
      Throws:
        `NullPointerException` - if `layout` is `null`

    - #### DefaultFormBuilder

          public DefaultFormBuilder(FormLayout layout,
                            ResourceBundle bundle,
                            JPanel container)

      Constructs a `DefaultFormBuilder` for the given layout, resource bundle, and panel.
      Parameters:
        `layout` - the `FormLayout` to be used
        `container` - the layout container
        `bundle` - the `ResourceBundle` used to lookup i15d strings
      Throws:
        `NullPointerException` - if `layout` or `container` is `null`

    - #### DefaultFormBuilder

          public DefaultFormBuilder(FormLayout layout,
                            com.jgoodies.common.internal.StringResourceAccessor localizer)

      Constructs a `DefaultFormBuilder` for the given layout and resource bundle.
      Parameters:
        `layout` - the `FormLayout` to be used
        `localizer` - used to lookup i15d strings
      Throws:
        `NullPointerException` - if `layout` is `null`

    - #### DefaultFormBuilder

          public DefaultFormBuilder(FormLayout layout,
                            com.jgoodies.common.internal.StringResourceAccessor localizer,
                            JPanel container)

      Constructs a `DefaultFormBuilder` for the given layout, resource bundle, and panel.
      Parameters:
        `layout` - the `FormLayout` to be used
        `container` - the layout container
        `localizer` - used to lookup i15d strings
      Throws:
        `NullPointerException` - if `layout` or `container` is `null`

  - ### Method Detail

    - #### background

          public DefaultFormBuilder background(Color background)

      Description copied from class: `PanelBuilder`
      Sets the panel's background color and the panel to be opaque.
      Overrides:
        `background` in class `I15dPanelBuilder`
      Parameters:
        `background` - the color to set as new background
      See Also:
        `JComponent.setBackground(Color)`

    - #### border

          public DefaultFormBuilder border(Border border)

      Description copied from class: `PanelBuilder`
      Sets the panel's border.
      Overrides:
        `border` in class `I15dPanelBuilder`
      Parameters:
        `border` - the border to set
      See Also:
        `JComponent.setBorder(Border)`

    - #### border

          public DefaultFormBuilder border(String emptyBorderSpec)

      Description copied from class: `PanelBuilder`
      Sets the panel's border as an EmptyBorder using the given specification for the top, left, bottom, right in DLU. For example "1dlu, 2dlu, 3dlu, 4dlu" sets an empty border with 1dlu in the top, 2dlu in the left side, 3dlu at the bottom, and 4dlu in the right hand side.

      Equivalent to `setBorder(Borders.createEmptyBorder(emptyBorderSpec))`.

      Overrides:
        `border` in class `I15dPanelBuilder`
      Parameters:
        `emptyBorderSpec` - describes the top, left, bottom, right sizes of the EmptyBorder to create
      See Also:
        `Borders.createEmptyBorder(String)`

    - #### opaque

          public DefaultFormBuilder opaque(boolean b)

      Description copied from class: `PanelBuilder`
      Sets the panel's opaque state.
      Overrides:
        `opaque` in class `I15dPanelBuilder`
      Parameters:
        `b` - true for opaque, false for non-opaque
      See Also:
        `JComponent.setOpaque(boolean)`

    - #### defaultRowSpec

          public DefaultFormBuilder defaultRowSpec(RowSpec defaultRowSpec)

      Sets the row specification that shall be used for component rows. It is `FormSpecs.PREF_ROWSPEC` by default.
      Parameters:
        `defaultRowSpec` - the RowSpec to be used for component rows

    - #### lineGapSize

          public DefaultFormBuilder lineGapSize(ConstantSize lineGapSize)

      Sets the size of gaps between component lines using the given constant size.

      Examples:

           .lineGapSize(Sizes.ZERO);
           .lineGapSize(Sizes.DLUY9);
           .lineGapSize(Sizes.pixel(1));

      Parameters:
        `lineGapSize` - the `ConstantSize` that describes the size of the gaps between component lines

    - #### paragraphGapSize

          public DefaultFormBuilder paragraphGapSize(ConstantSize paragraphGapSize)

      Sets the size of gaps between paragraphs using the given constant size.

      Examples:

           .setParagraphGapSize(Sizes.DLUY14);
           .setParagraphGapSize(Sizes.dluY(22));
           .setParagraphGapSize(Sizes.pixel(42));

      Parameters:
        `paragraphGapSize` - the `ConstantSize` that describes the size of the gaps between paragraphs

    - #### leadingColumnOffset

          public DefaultFormBuilder leadingColumnOffset(int columnOffset)

      Sets the offset of the leading column, often 0 or 1.
      Parameters:
        `columnOffset` - the new offset of the leading column

    - #### rowGroupingEnabled

          public DefaultFormBuilder rowGroupingEnabled(boolean enabled)

      Enables or disables the grouping of new data rows.
      Parameters:
        `enabled` - indicates grouping enabled, false disabled

    - #### getDefaultRowSpec

          @Deprecated
          public RowSpec getDefaultRowSpec()

      Deprecated. Obsolete; will be deleted from the next version
      Returns the row specification that is used for component rows.
      Returns:
        the `RowSpec` used for component rows
      Since:
        1.2

    - #### setDefaultRowSpec

          @Deprecated
          public void setDefaultRowSpec(RowSpec defaultRowSpec)

      Deprecated. Replaced by `defaultRowSpec(RowSpec)`
      Sets the row specification that shall be used for component rows. It is `FormSpecs.PREF_ROWSPEC` by default.
      Parameters:
        `defaultRowSpec` - the RowSpec to be used for component rows
      Since:
        1.2

    - #### getLineGapSpec

          @Deprecated
          public RowSpec getLineGapSpec()

      Deprecated. Obsolete; will be deleted from the next version
      Returns the row specification that is used to separate component row.
      Returns:
        the `RowSpec` that is used to separate component rows

    - #### setLineGapSize

          @Deprecated
          public void setLineGapSize(ConstantSize lineGapSize)

      Deprecated. Replaced by `lineGapSize(ConstantSize)`
      Sets the size of gaps between component lines using the given constant size.

      Examples:

           .setLineGapSize(Sizes.ZERO);
           .setLineGapSize(Sizes.DLUY9);
           .setLineGapSize(Sizes.pixel(1));

      Parameters:
        `lineGapSize` - the `ConstantSize` that describes the size of the gaps between component lines

    - #### setParagraphGapSize

          @Deprecated
          public void setParagraphGapSize(ConstantSize paragraphGapSize)

      Deprecated. Replaced by `lineGapSize(ConstantSize)`
      Sets the size of gaps between paragraphs using the given constant size.

      Examples:

           .setParagraphGapSize(Sizes.DLUY14);
           .setParagraphGapSize(Sizes.dluY(22));
           .setParagraphGapSize(Sizes.pixel(42));

      Parameters:
        `paragraphGapSize` - the `ConstantSize` that describes the size of the gaps between paragraphs

    - #### getLeadingColumnOffset

          @Deprecated
          public int getLeadingColumnOffset()

      Deprecated. Obsolete; will be deleted from the next version
      Returns the offset of the leading column, often 0 or 1.
      Returns:
        the offset of the leading column

    - #### setLeadingColumnOffset

          @Deprecated
          public void setLeadingColumnOffset(int columnOffset)

      Deprecated. Replaced by `leadingColumnOffset(int)`
      Sets the offset of the leading column, often 0 or 1.
      Parameters:
        `columnOffset` - the new offset of the leading column

    - #### isRowGroupingEnabled

          @Deprecated
          public boolean isRowGroupingEnabled()

      Deprecated. Obsolete; will be deleted from the next version
      Returns whether new data rows are being grouped or not.
      Returns:
        true indicates grouping enabled, false disabled

    - #### setRowGroupingEnabled

          @Deprecated
          public void setRowGroupingEnabled(boolean enabled)

      Deprecated. Replaced by `rowGroupingEnabled(boolean)`
      Enables or disables the grouping of new data rows.
      Parameters:
        `enabled` - indicates grouping enabled, false disabled

    - #### appendLineGapRow

          public final void appendLineGapRow()

      Appends a row with this builder's line gap size.
      See Also:
        `lineGapSize(ConstantSize)`, `AbstractFormBuilder.appendRow(String)`

    - #### append

          public void append(Component component)

      Adds a component to the panel using the default constraints with a column span of 1. Then proceeds to the next data column.
      Parameters:
        `component` - the component to add

    - #### append

          public void append(Component component,
                    int columnSpan)

      Adds a component to the panel using the default constraints with the given columnSpan. Proceeds to the next data column.
      Parameters:
        `component` - the component to append
        `columnSpan` - the column span used to add

    - #### append

          public void append(Component c1,
                    Component c2)

      Adds two components to the panel; each component will span a single data column. Proceeds to the next data column.
      Parameters:
        `c1` - the first component to add
        `c2` - the second component to add

    - #### append

          public void append(Component c1,
                    Component c2,
                    Component c3)

      Adds three components to the panel; each component will span a single data column. Proceeds to the next data column.
      Parameters:
        `c1` - the first component to add
        `c2` - the second component to add
        `c3` - the third component to add

    - #### append

          public JLabel append(String textWithMnemonic)

      Adds a text label to the panel and proceeds to the next column.
      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
      Returns:
        the added label

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component component)

      Adds a text label and component to the panel. Then proceeds to the next data column.

      The created label is labeling the given component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `component` - the component to add
      Returns:
        the added label

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component c,
                      boolean nextLine)

      Adds a text label and component to the panel; the component will span the specified number columns. Proceeds to the next data column, and goes to the next line if the boolean flag is set.

      The created label is labeling the given component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `c` - the component to add
        `nextLine` - true forces a next line
      Returns:
        the added label
      See Also:
        `JLabel.setLabelFor(java.awt.Component)`

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component c,
                      int columnSpan)

      Adds a text label and component to the panel; the component will span the specified number columns. Proceeds to the next data column.

      The created label is labeling the given component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `c` - the component to add
        `columnSpan` - number of columns the component shall span
      Returns:
        the added label
      See Also:
        `JLabel.setLabelFor(java.awt.Component)`

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component c1,
                      Component c2)

      Adds a text label and two components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `c1` - the first component to add
        `c2` - the second component to add
      Returns:
        the added label

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component c1,
                      Component c2,
                      int colSpan)

      Adds a text label and two components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `c1` - the first component to add
        `c2` - the second component to add
        `colSpan` - the column span for the second component
      Returns:
        the created label

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component c1,
                      Component c2,
                      Component c3)

      Adds a text label and three components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `c1` - the first component to add
        `c2` - the second component to add
        `c3` - the third component to add
      Returns:
        the added label

    - #### append

          public JLabel append(String textWithMnemonic,
                      Component c1,
                      Component c2,
                      Component c3,
                      Component c4)

      Adds a text label and four components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
        `c1` - the first component to add
        `c2` - the second component to add
        `c3` - the third component to add
        `c4` - the fourth component to add
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey)

      Adds an internationalized (i15d) text label to the panel using the given resource key and proceeds to the next column.
      Parameters:
        `resourceKey` - the resource key for the the label's text
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component component)

      Adds an internationalized (i15d) text label and component to the panel. Then proceeds to the next data column.

      The created label is labeling the given component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `component` - the component to add
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component component,
                          boolean nextLine)

      Adds an internationalized (i15d) text label and component to the panel. Then proceeds to the next data column. Goes to the next line if the boolean flag is set.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `component` - the component to add
        `nextLine` - true forces a next line
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component c,
                          int columnSpan)

      Adds an internationalized (i15d) text label to the panel using the given resource key; then proceeds to the next data column and adds a component with the given column span. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `c` - the component to add
        `columnSpan` - number of columns the component shall span
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component c1,
                          Component c2)

      Adds an internationalized (i15d) text label and two components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `c1` - the first component to add
        `c2` - the second component to add
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component c1,
                          Component c2,
                          int colSpan)

      Adds an internationalized (i15d) text label and two components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `c1` - the first component to add
        `c2` - the second component to add
        `colSpan` - the column span for the second component
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component c1,
                          Component c2,
                          Component c3)

      Adds an internationalized (i15d) text label and three components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `c1` - the first component to add
        `c2` - the second component to add
        `c3` - the third component to add
      Returns:
        the added label

    - #### appendI15d

          public JLabel appendI15d(String resourceKey,
                          Component c1,
                          Component c2,
                          Component c3,
                          Component c4)

      Adds an internationalized (i15d) text label and four components to the panel; each component will span a single column. Proceeds to the next data column.

      The created label is labeling the first component; so the component gets the focus if the (optional) label mnemonic is pressed.

      Parameters:
        `resourceKey` - the resource key for the text to add
        `c1` - the first component to add
        `c2` - the second component to add
        `c3` - the third component to add
        `c4` - the third component to add
      Returns:
        the added label

    - #### appendTitle

          public JLabel appendTitle(String textWithMnemonic)

      Adds a title label to the panel and proceeds to the next column.
      Parameters:
        `textWithMnemonic` - the label's text - may mark a mnemonic
      Returns:
        the added title label

    - #### appendI15dTitle

          public JLabel appendI15dTitle(String resourceKey)

      Adds an internationalized title label to the panel and proceeds to the next column.
      Parameters:
        `resourceKey` - the resource key for the title's text
      Returns:
        the added title label

    - #### appendSeparator

          public JComponent appendSeparator()

      Adds a separator without text that spans all columns.
      Returns:
        the added titled separator

    - #### appendSeparator

          public JComponent appendSeparator(String text)

      Adds a separator with the given text that spans all columns.
      Parameters:
        `text` - the separator title text
      Returns:
        the added titled separator

    - #### appendI15dSeparator

          public JComponent appendI15dSeparator(String resourceKey)

      Appends an internationalized titled separator for the given resource key that spans all columns.
      Parameters:
        `resourceKey` - the resource key for the separator title's text
      Returns:
        the added titled separator

    - #### getLeadingColumn

          protected int getLeadingColumn()

      Returns the leading column. Unlike the superclass this method honors the column offset.
      Overrides:
        `getLeadingColumn` in class `AbstractFormBuilder`
      Returns:
        the leading column

Copyright © 2002-2014 JGoodies Software GmbH. All Rights Reserved.