Звучит так, будто вы хотите заключить логическое значение в класс, в котором вы можете прослушивать изменения.
class ObservableBoolean {
// "CopyOnWrite" to avoid concurrent modification exceptions in loop below.
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);
}
}
Тогда просто сделайте:
ObservableBoolean b = new ObservableBoolean();
//...
// Start the "period of time":
b.addChangeListener(iWantToBeNotifiedOfChanges);
// ...
// End the "period of time":
b.removeChangeListener(iWantToBeNotifiedOfChanges);
На самом деле это простой случай шаблона MVC (и шаблона наблюдателя). Модель в этом случае - ObservableBoolean, а представление - это «представление», которое хочет получать уведомления об изменениях.
Вы также можете написать свой собственный ChangeListener
интерфейс, если хотите избежать странного вида javax.swing...
import