Как сказал Том, сначала нужно позвонить на Observable.setChanged
.
Проблема с реализацией Observable
в Java заключается в том, что она взята из JDK 1.0, что не является плохим, но она не обновлялась с тех пор: (.
Кроме того, я не вижу каких-либо проблем с ним, но учтите, что Observable
не использует слабые ссылки для наблюдателей (WeakReference появился в Java 1.2), поэтому вы должны позаботиться, чтобы всегда вызывать deleteObserver
чтобы не генерировать утечки, когда наблюдатель больше не нужен.
Другой альтернативой, но с более сложным интерфейсом, является служебный класс PropertyChangeSupport
. Слушатели Swing основаны на интерфейсе PropertyChangeListener
и этом служебном классе, поэтому, если вы используете его в коде пользовательского интерфейса, вы найдете его более подходящим.