Module
javafx.base
Package javafx.beans.binding
提供在Binding
上创建和操作的类,用于计算取决于一个或多个来源的值。
绑定的特点
绑定从一个或多个源组合,通常称为依赖关系。 绑定会根据更改依赖关系来观察其依赖关系,并根据依赖关系的更改来更新自己的值。
本库中定义的几乎所有绑定都需要为其依赖实现Observable
。 已经提供了两种类型的实现,包javafx.beans.property
和可观察集合( ObservableList
和ObservableMap
)中的属性。 绑定还实现Observable
并且可以再次作为其他绑定的源,从而构建非常复杂的绑定。
我们执行中的绑定总是很懒惰地计算。 这意味着,如果依赖关系更改,绑定的结果不会立即重新计算,而是被标记为无效。 下次无效绑定的值被请求时,重新计算。
高级API和低级API
Binding 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 标记界面,用于标记所有绑定数字值的绑定。NumberExpression NumberExpression
是一个ObservableNumberValue
加上额外的便利方法,以流利的风格生成绑定。 -
类摘要 Class 描述 Bindings 绑定是一个帮助类,具有很多实用功能来创建简单的绑定。BooleanBinding 基础类提供实现270659602452550的boolean
所需的大部分功能。BooleanExpression BooleanExpression
是一个ObservableBooleanValue
,另外还有一个方便的方法来生成流畅的绑定。DoubleBinding 提供实现270659602489735的double
所需的大部分功能的基类。DoubleExpression DoubleExpression
是一个ObservableDoubleValue
加上额外的便利方法,以流利的风格生成绑定。FloatBinding 提供实现Binding
的float
值所需的大部分功能的基类。FloatExpression FloatExpression
是一个ObservableFloatValue
加上额外的便利方法,以流利的风格生成绑定。IntegerBinding 提供实现270659602613290的int
所需的大部分功能的基类。IntegerExpression IntegerExpression
是一个ObservableIntegerValue
加上额外的便利方法,以流利的风格生成绑定。ListBinding<E> 提供实现ObservableList
的Binding
所需的大部分功能的基类。ListExpression<E> ListExpression
是一个ObservableListValue
加上额外的便利方法,以流利的风格生成绑定。LongBinding 提供实现long的long
所需的大部分功能的基类。LongExpression LongExpression
是一个ObservableLongValue
加上额外的便利方法,以流利的风格生成绑定。MapBinding<K,V> 提供实现ObservableMap
的Binding
所需的大部分功能的基类。MapExpression<K,V> MapExpression
是一个ObservableMapValue
加上额外的便利方法,以流利的风格生成绑定。NumberExpressionBase NumberExpressionBase
包含了以流畅样式生成绑定的方便方法,这是所有NumberExpression子类所共有的。ObjectBinding<T> 基类提供了实现Object的Object
所需的大部分功能。ObjectExpression<T> ObjectExpression
是一个ObservableObjectValue
,另外还有一个方便的方法来生成流畅的绑定。SetBinding<E> 提供实现ObservableSet
的Binding
所需的大部分功能的基类。SetExpression<E> SetExpression
是一个ObservableSetValue
加上额外的便利方法,以流利的风格生成绑定。StringBinding 提供实现String的String
所需的大部分功能的基类。StringExpression StringExpression
是一个ObservableStringValue
加上额外的便利方法,以流利的风格生成绑定。When 计算三元表达式的绑定的起始点。