import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class PropertyChangeTest {
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
private String value = null;
public String getValue() {
return value;
}
public void setValue(String value) {
String oldValue = this.value;
this.value = value;
//値をセットした時に、イベントを発火する
pcs.firePropertyChange("value", oldValue, value);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
pcs.removePropertyChangeListener(listener);
}
public static void main(String[] args) {
PropertyChangeTest obj = new PropertyChangeTest();
//リスナーをセット
obj.addPropertyChangeListener(evt -> {
System.out.println("-- 変わったよー --");
System.out.println("変数: " + evt.getPropertyName());
System.out.println("変更前: " + evt.getOldValue());
System.out.println("変更後: " + evt.getNewValue());
});
//フィールド変数の値を変更
obj.setValue("a");
obj.setValue("b");
obj.setValue("b"); //この分は通知されない
}
}