Eclipse中提供了swing的数据绑定功能,可以对Model数据进行读写。但是,需要使用PropertyChangeSupport这个类,来实现属性的绑定,以满足监听器进行注册监听后才能进行model的修改功能,否则只能读。其文档定义为:
This is a utility class that can be used by beans that supportbound properties. You can use an instance of this class as a member fieldof your bean and delegate various work to it.
在bean中实现以下方法,并在set方法中调用firePropertyChange方法。
Bean文件例子如下:
package testdbrw;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class ClassMate {
private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
this);
String name;
String email;
String phone;
String idont;
public String getName() {
return name;
}
/**
* 设置name
* @param name name
*/
public void setName(String newname) {
String oldValue = name;
name = newname;
firePropertyChange("name", oldValue, name);
}
/**
* 获取email
* @return email email
*/
public String getEmail() {
return email;
}
/**
* 设置email
* @param email email
*/
public void setEmail(String email) {
this.email = email;
}
/**
* 获取phone
* @return phone phone
*/
public String getPhone() {
return phone;
}
/**
* 设置phone
* @param phone phone
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* 获取idont
* @return idont idont
*/
public String getIdont() {
return idont;
}
/**
* 设置idont
* @param idont idont
*/
public void setIdont(String idont) {
this.idont = idont;
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
public void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
public void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(propertyName,
listener);
}
protected void firePropertyChange(String propertyName, Object oldValue,
Object newValue) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue,
newValue);
}
}
数据绑定的example地址: