Spec-Zone.ru › OpenJavaFX 11

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>
    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 значения типа 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.

Spec-Zone.ru

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