Module  javafx.base

Package javafx.beans.binding

提供在Binding上创建和操作的类,用于计算取决于一个或多个来源的值。

绑定的特点

绑定从一个或多个源组合,通常称为依赖关系。 绑定会根据更改依赖关系来观察其依赖关系,并根据依赖关系的更改来更新自己的值。

本库中定义的几乎所有绑定都需要为其依赖实现Observable 已经提供了两种类型的实现,包javafx.beans.property和可观察集合( ObservableListObservableMap )中的属性。 绑定还实现Observable并且可以再次作为其他绑定的源,从而构建非常复杂的绑定。

我们执行中的绑定总是很懒惰地计算。 这意味着,如果依赖关系更改,绑定的结果不会立即重新计算,而是被标记为无效。 下次无效绑定的值被请求时,重新计算。

高级API和低级API

Binding API大致分为两部分:高级绑定API和低级绑定API。 高级绑定API允许以易于使用的方式构建简单的绑定。 使用高级API定义绑定应该很简单,特别是在提供代码完成的IDE中使用时。 不幸的是它有其局限性,在这一点上,低级别的API就起作用了。 经验丰富的Java开发人员可以使用低级别API来定义绑定,如果高级API的功能不足或提高性能。 低级API的主要目标是快速执行和小内存占用。

以下是如何使用两个API的示例。 假设我们有四个实例DoubleProperty abc ,并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(); } };