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