It looks like you want to wrap a boolean in a class that you can listen for changes.
class ObservableBoolean {
private final List<ChangeListener> listeners =
new CopyOnWriteArrayList<ChangeListener>();
private boolean value;
public boolean getValue() {
return value;
}
public synchronized void setValue(boolean b) {
value = b;
for (ChangeListener cl : listeners)
cl.stateChanged(new ChangeEvent(this));
}
public synchronized void addChangeListener(ChangeListener cl) {
listeners.add(cl);
}
public synchronized void removeChangeListener(ChangeListener cl) {
listeners.remove(cl);
}
}
Then just do:
ObservableBoolean b = new ObservableBoolean();
b.addChangeListener(iWantToBeNotifiedOfChanges);
b.removeChangeListener(iWantToBeNotifiedOfChanges);
This is actually a simple example of an MVC pattern (and an observer pattern). The model in this case is ObservableBoolean, and the view will be a "view" that wants to receive notification of changes.
ChangeListener, javax.swing... import