Skip to main content

Beans Binding 0.6 Release Available

Posted by shan_man on June 21, 2007 at 9:04 AM PDT

Just a short note to announce that I've posted the 0.6 release of
the Beans Binding project at

In this release:

  • Improved JTable support
  • More default converters
  • Name your Bindings
  • Compile-time type safety for setting Parameters
  • A handful of method renames

Full details, straight from the release notes:

API Changes/Additions

  • Binding.addBinding/removeBinding/getBindings have been renamed to the more
    descriptive Binding.addChildBinding/removeChildBinding/getChildBindings
  • Binding.setSourcePath/getSourcePath have been renamed to the more
    appropriate Binding.setSourceExpression/getSourceExpression
  • To enforce compile-time type safety, the Object varargs parameter has been
    removed from all constructors and methods in Binding and BindingContext.
    You must now call setValue directly. To allow for method chaining, setValue
    now returns the Binding. As an example, replace this binding:

      Binding b = new Binding(source, "${property}", target, "property",
                              Parameter1, param1Value, Parameter2, param2Value);

    with this:

      Binding b = new Binding(source, "${property}", target, "property");
      b.setValue(Parameter1, param1Value).setValue(Parameter2, param2Value);

  • Some Binding and BindingContext methods were updated to throw the more
    appropriate IllegalArgumentException (rather than IllegalStateException)
    for certain conditions.

  • Binding now has a name property. The ability to name a binding assists in
    debugging. Its main goal, however, is to make it possible to fetch
    bindings by name. This will show its full utility with future changes
    making it easier to validate and then commit or revert bindings as a group.

    To support naming a binding, the following API additions have been
    made to Binding:

    • Constructors that take a String name parameter
    • void setName(String name)
    • String getName()
    • addChildBinding methods that take a String name parameter
    • Binding getChildBinding(String name)

    In addition, the following additions have been made to BindingContext:

    • addBinding methods that take a String name parameter
    • Binding getBinding(String name)

  • Added a Parameter to control the editability of a JTable when it is the
    target of a binding. A new EditableParameter has been added to
    SwingBindingSupport to control this. It can be used on a top-level
    binding to control the editability of the entire JTable, and/or on the
    binding's individual child bindings to control editability of individual
    columns. For example, to make all columns non-editable, except for
    the first:

      Binding b = new Binding(list, null, table, "elements");
      // whole table is non-editable
      b.setValue(SwingBindingSupport.EditableParameter, false);
      b.addChildBinding("${firstName}, null)
          .setValue(SwingBindingSupport.TableColumnParameter, 0)
          // this column IS editable
          .setValue(SwingBindingSupport.EditableParameter, true);
      b.addChildBinding("${lastName}, null)
          .setValue(SwingBindingSupport.TableColumnParameter, 1);

Issues Resolved

  • 2: Need converters between various types and String
  • 5: JTable binding support doesn't support sorting and filtering


The JavaDoc in Binding and SwingBindingSupport has been updated to reflect the
change to use EL for the source "property".

Related Topics >>