Spec-Zone.ru › OpenJavaFX 17

Package javafx.beans.binding

Предоставляет классы, которые создают и работают с Binding, вычисляющим значение, зависящее от одного или нескольких источников.

Характеристики привязок

Привязки собираются из одного или нескольких источников, обычно называемых их зависимостями. Привязка отслеживает изменения своих зависимостей и обновляет свое собственное значение в соответствии с изменениями в зависимостях.

Практически все привязки, определенные в этой библиотеке, требуют реализаций Observable для своих зависимостей. Уже предоставлены две реализации типов: свойства в пакете javafx.beans.property и наблюдаемые коллекции (ObservableList и ObservableMap). Привязки также реализуют Observable и могут снова служить источниками для других привязок, что позволяет создавать очень сложные привязки из простых.

Привязки в нашей реализации всегда вычисляются лениво. Это означает, что если зависимость изменяется, результат привязки не пересчитывается немедленно, а помечается как недействительный. В следующий раз, когда запрашивается значение недействительной привязки, оно пересчитывается.

API высокого уровня и API низкого уровня

API привязок грубо разделен на две части: API привязок высокого уровня и API привязок низкого уровня. API привязок высокого уровня позволяет создавать простые привязки простым способом. Определение привязки с помощью API высокого уровня должно быть простым, особенно при использовании в IDE, которая предоставляет автодополнение. К сожалению, это имеет свои ограничения, и на этом этапе вступает в игру API низкого уровня. Опытные разработчики Java могут использовать API низкого уровня для определения привязок, если функциональность API высокого уровня недостаточна или для повышения производительности. Основными целями API низкого уровня являются быстрое выполнение и небольшой размер занимаемой памяти.

Ниже приведен пример того, как можно использовать оба API. Предположим, что у нас есть четыре экземпляра DoubleProperty a, b, c и d, мы можем определить привязку, которая вычисляет a*b + c*d с помощью API высокого уровня, например, так:

NumberBinding result = Bindings.add (a.multiply(b), c.multiply(d));

Определение той же привязки с помощью API низкого уровня может быть сделано следующим образом:


DoubleBinding foo = new DoubleBinding() {

    {
        super.bind(a, b, c, d);
    }

    @Override
    protected double computeValue() {
        return a.getValue() * b.getValue() + c.getValue() * d.getValue();
    }
};

Резюме интерфейсов
Интерфейс Описание
Binding<T>
A Binding вычисляет значение, зависящее от одного или нескольких источников.
NumberBinding
Интерфейс-метка для всех Binding, которые оборачивают числовое значение.
NumberExpression
NumberExpression является ObservableNumberValue плюс дополнительные удобные методы для создания связей в стиле fluent.
Резюме классов
Класс Описание
Bindings
Bindings — вспомогательный класс с множеством полезных функций для создания простых связей.
BooleanBinding
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding логического значения.
BooleanExpression
BooleanExpression является ObservableBooleanValue плюс дополнительные удобные методы для создания связей в стиле fluent.
DoubleBinding
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding вещественного значения.
DoubleExpression
DoubleExpression является ObservableDoubleValue плюс дополнительные удобные методы для создания связей в стиле fluent.
FloatBinding
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding значения с плавающей точкой.
FloatExpression
FloatExpression является ObservableFloatValue плюс дополнительные удобные методы для создания связей в стиле fluent.
IntegerBinding
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding целого значения.
IntegerExpression
IntegerExpression является ObservableIntegerValue плюс дополнительные удобные методы для создания связей в стиле fluent.
ListBinding<E>
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding списка ObservableList.
ListExpression<E>
ListExpression является ObservableListValue плюс дополнительные удобные методы для создания связей в стиле fluent.
LongBinding
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding длинного значения.
LongExpression
LongExpression является ObservableLongValue плюс дополнительные удобные методы для создания связей в стиле fluent.
MapBinding<K,​V>
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding отображения ObservableMap.
MapExpression<K,​V>
MapExpression является ObservableMapValue плюс дополнительные удобные методы для создания связей в стиле fluent.
NumberExpressionBase
NumberExpressionBase содержит удобные методы для создания связей в стиле fluent, которые являются общими для всех подклассов NumberExpression.
ObjectBinding<T>
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding объекта.
ObjectExpression<T>
ObjectExpression является ObservableObjectValue плюс дополнительные удобные методы для создания связей в стиле fluent.
SetBinding<E>
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding набора ObservableSet.
SetExpression<E>
SetExpression является ObservableSetValue плюс дополнительные удобные методы для создания связей в стиле fluent.
StringBinding
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding строкового значения.
StringExpression
StringExpression является ObservableStringValue плюс дополнительные удобные методы для создания связей в стиле fluent.
When
Начальная точка для связи, которая вычисляет условное выражение.

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API