Я бы справился с этим с ChangeEvent . Это просто признак того, что что-то изменилось.
Что касается реализации функции добавления / удаления / запуска. Не существует такого механизма, как PropertyChangeSupport, но код достаточно прост, в этом нет особой необходимости.
private final EventListenerList listenerList = new EventListenerList();
private final ChangeEvent stateChangeEvent = new ChangeEvent(this);
public void addChangeListener(ChangeListener l) {
listenerList.add(ChangeListener.class, l);
}
public void removeChangeListener(ChangeListener l) {
listenerList.remove(ChangeListener.class, l);
}
protected void fireChange() {
for (ChangeListener l: listenerList.getListeners(ChangeListener.class)) {
l.stateChanged(stateChangeEvent);
}
}
Примечание: JComponent предоставляет защищенный объект listenerList
для использования подклассами.