Пакет javafx.beans.binding
Предоставляет классы, которые создают и работают с Binding, вычисляющим значение, зависящее от одного или нескольких источников.
Характеристики связей
Связи собираются из одного или нескольких источников, обычно называемых их зависимостями. Связь отслеживает изменения своих зависимостей и обновляет свое собственное значение в соответствии с изменениями зависимостей.
Практически все связи, определенные в этой библиотеке, требуют реализации Observable для своих зависимостей. Уже предоставлены два типа реализаций: свойства в пакете javafx.beans.property и наблюдаемые коллекции (ObservableList и ObservableMap). Связи также реализуют Observable и могут снова служить источниками для других связей, что позволяет строить очень сложные связи из простых.
Связи в нашей реализации всегда вычисляются лениво. Это означает, что если зависимость изменится, результат связи не пересчитывается сразу, а помечается как недействительный. В следующий раз, когда потребуется значение недействительной связи, оно будет пересчитано.
API высокого уровня и API низкого уровня
API связей примерно разделен на две части: API связей высокого уровня и API связей низкого уровня. API связей высокого уровня позволяет создавать простые связи удобным способом. Определение связи с помощью API высокого уровня должно быть простым, особенно при использовании среды разработки, которая предоставляет автодополнение кода. К сожалению, это имеет свои ограничения, и в этом случае вступает в действие 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 целого значения. |
| 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 | Интерфейс разметки для всех привязок, которые оборачивают числовое значение. |
| 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 строкового значения. |
| 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.