T.M. SoftStudio

feci quod potui, faciant meliora potentes

Интерфейс ObservableValue<T>

Интерфейс ObservableValue<T> расширяет интерфейс javafx.beans.Observable и обеспечивает обертывание значения свойства объекта и возможность прослушивания событий изменения значения и событий недействительности значения.

События недействительности значения возникают в случае отложенных вычислений значения, поддерживаемых реализациями интерфейса ObservableValue<T> системой связывания данных и свойствами компонентов JavaFX.

Отложенное вычисление означает, что значение пересчитывается не сразу после своего изменения, а только тогда когда оно запрашивается методом getValue() интерфейса ObservableValue<T>. В промежутке между изменением значения и его пересчетом и генерируется событие недействительности значения.

Интерфейс ObservableValue<T> имеет, помимо унаследованных от интерфейса Observable, следующие методы:

  • Метод void addListener(ChangeListener<? super T> listener) – добавляет обработчик javafx.beans.value.ChangeListener<T> событий изменения значения. Присоединение обработчика ChangeListenerвызывает пересчет значения сразу после своего изменения, даже если реализацией поддерживается отложенное вычисление.

  • Метод void removeListener(ChangeListener<? super T> listener) – удаляет обработчик javafx.beans.value.ChangeListener<T> событий изменения значения из списка слушателей.

  • Метод T getValue() – возвращает обернутое значение. Вызов данного метода обеспечивает пересчет значения после его изменения.

Пакет javafx.beans.value предоставляет набор расширений интерфейса ObservableValue<T> для различных типов данных:

  • Интерфейс ObservableObjectValue<T> – обертывает значение типа java.lang.Object, имеет метод T get(), возвращающий объект.

  • Интерфейс ObservableStringValue – обертывает строки java.lang.String, расширяет интерфейс ObservableObjectValue<java.lang.String>.

  • Интерфейс ObservableNumberValue – обертывает числа java.lang.Number, расширяет интерфейс ObservableValue<java.lang.Number> и имеет методы int intValue(), long longValue(), float floatValue(),double doubleValue().

  • Интерфейс ObservableIntegerValue – обертывает целые числа, имеет метод int get() и расширяет интерфейс ObservableNumberValue.

  • Интерфейс ObservableLongValue – обертывает длинные числа, имеет метод long get() и расширяет интерфейс ObservableNumberValue.

  • Интерфейс ObservableFloatValue – обертывает числа с плавающей запятой, имеет метод float get() и расширяет интерфейс ObservableNumberValue.

  • Интерфейс ObservableDoubleValue – обертывает числа с двойной точностью, имеет метод double get() и расширяет интерфейс ObservableNumberValue.

  • Интерфейс ObservableBooleanValue – обертывает логические значения, расширяет интерфейс ObservableValue<java.lang.Boolean> и имеет метод boolean get().

  • Интерфейс ObservableSetValue<E> – обертывает значения типа javafx.collections.ObservableSet<E> и расширяет интерфейсы ObservableObjectValue<ObservableSet<E>>, ObservableSet<E>.

  • Интерфейс ObservableMapValue<K,V> – обертывает значения типа javafx.collections.ObservableMap<K,V> и расширяет интерфейсы ObservableObjectValue<ObservableMap<K,V>>, ObservableMap<K,V>.

  • Интерфейс ObservableListValue<E> – обертывает значения типа javafx.collections.ObservableList<E> и расширяет интерфейсы ObservableObjectValue<ObservableList<E>>, ObservableList<E>.