Contact to javax.beans.binding

This little example will show you how to bind a JTextField to a name property of a Person with Beans Binding (JSR-295). First the Person:

package com.tutego.binding;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

public class Person
{
private PropertyChangeSupport pcs = new PropertyChangeSupport( this );

private String name = "";

public void addPropertyChangeListener( PropertyChangeListener x )
{
pcs.addPropertyChangeListener( x );
}

public void removePropertyChangeListener( PropertyChangeListener x )
{
pcs.removePropertyChangeListener( x );
}

public String getName()
{
return name;
}

public void setName( String name )
{
String old = getName();
this.name = name;
pcs.firePropertyChange( "name", old, getName() );

System.out.println( "Changed name!" );
}
}

The code for the JavaBean Person is a litte bit cumbersome because of the PropertyChangeListener who will notify the Binding Framework if the model change.

package com.tutego.binding;

import javax.beans.binding.BindingContext;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class BindingDemo
{
public static void main( String[] args )
{
Person p = new Person();

JTextField tf = new JTextField();

BindingContext bindingContext = new BindingContext();
bindingContext.addBinding( p, "${name}", tf, "text" );
bindingContext.bind();


JFrame f = new JFrame();
f.add( tf );
f.pack();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setVisible( true );

p.setName( "Christian Ullenboom" );
}
}

Swing on the other side will although notify the model if the user type text in the text field and press Return. This will change the model.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert