Пакет 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> | Binding вычисляет значение, которое зависит от одного или нескольких источников. |
| Bindings | Bindings — вспомогательный класс со множеством утилитных функций для создания простых связей. |
| BooleanBinding | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding значения типа boolean. |
| BooleanExpression | BooleanExpression — это ObservableBooleanValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| DoubleBinding | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding значения типа double. |
| DoubleExpression | DoubleExpression — это ObservableDoubleValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| FloatBinding | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding значения типа float. |
| FloatExpression | FloatExpression — это ObservableFloatValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| IntegerBinding | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding значения типа int. |
| IntegerExpression | IntegerExpression — это ObservableIntegerValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| ListBinding<E> | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding списка ObservableList. |
| ListExpression<E> | ListExpression — это ObservableListValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| LongBinding | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding значения типа long. |
| LongExpression | LongExpression — это ObservableLongValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
|
MapBinding<K, |
Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding карты ObservableMap. |
|
MapExpression<K, |
MapExpression — это ObservableMapValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| NumberBinding | Интерфейс-метка для всех Bindings, которые оборачивают числовое значение. |
| NumberExpression | NumberExpression — это ObservableNumberValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| NumberExpressionBase | NumberExpressionBase содержит удобные методы для генерации связей в стиле fluent, общие для всех подклассов NumberExpression. |
| ObjectBinding<T> | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding объекта Object. |
| ObjectExpression<T> | ObjectExpression — это ObservableObjectValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| SetBinding<E> | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding набора ObservableSet. |
| SetExpression<E> | SetExpression — это ObservableSetValue плюс дополнительные удобные методы для генерации связей в стиле fluent. |
| StringBinding | Базовый класс, предоставляющий большую часть функциональности, необходимой для реализации Binding строкового значения String. |
| 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.