Reputation: 2454
This is what my code looks like:
Class A {
private boolean valueChanged;
public static void main(String args[]) {
B obj = new B();
obj.addPropertyChangeListener("valueChanged", new ValueChangeListener());
obj.someMethodThatFiresChange();
}
private class ValueChangeListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
if(Boolean.TRUE.equals(evt.getNewValue()) {
doSomething(); //code never breaks here!!
}
}
}
}
Class B {
private boolean valueChanged;
public void setValueChanged(boolean b) {
boolean oldVal = valueChanged;
valueChanged = b;
firePropertyChange("valueChanged", oldVal, valueChanged);
}
public void someMethodThatFiresChange() {
setValueChanged(true);
}
}
This code however, doesn't seem to work - It never reaches the block that is supposed to be executed when the event is fired! What am I doing wrong here?
Upvotes: 1
Views: 982
Reputation: 1849
This works for me:
public class A {
/**
* @param args
*/
public static void main(String[] args) {
B obj = new B();
obj.addPropertyChangeListener("valueChanged", new ValueChangeListener());
obj.someMethodThatFiresChange();
}
private static final class ValueChangeListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent event) {
System.out.println("huhu");
if(Boolean.TRUE.equals(event.getNewValue())) {
System.out.println("haha");
}
}
}
private static final class B {
private boolean valueChanged;
private final PropertyChangeSupport pcSupport = new PropertyChangeSupport(this);
public void setValueChanged(boolean b) {
boolean oldVal = valueChanged;
valueChanged = b;
pcSupport.firePropertyChange("valueChanged", oldVal, valueChanged);
}
public void someMethodThatFiresChange() {
setValueChanged(true);
setValueChanged(false);
setValueChanged(true);
}
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
pcSupport.addPropertyChangeListener(propertyName, listener);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
pcSupport.addPropertyChangeListener(listener);
}
}
}
Output:
huhu
haha
huhu
huhu
haha
I think you missed something in your example.
Upvotes: 2