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.