Module  javafx.base
软件包  javafx.beans.binding

Class DoubleBinding

  • All Implemented Interfaces:
    Binding<Number>NumberBindingNumberExpressionObservableObservableDoubleValueObservableNumberValueObservableValue<Number>


    public abstract class DoubleBinding
    extends DoubleExpression
    implements NumberBinding
    提供实现doubledouble所需的大部分功能的基类。

    DoubleBinding提供了一个简单的无效方案。 扩展类可以通过调用bind(Observable...)来注册依赖关系。 如果其中一个注册的依赖关系无效,则此DoubleBinding被标记为无效。 unbind(Observable...)监听依赖可以停止。

    为了提供该类的具体实现,必须实现方法computeValue()以基于依赖关系的当前状态来计算该绑定的值。 当调用get()进行无效绑定时调用。

    以下是一个DoubleBinding计算ObservableNumberValue moo平方根的简单示例。

       final ObservableDoubleValue moo = ...; DoubleBinding foo = new DoubleBinding() { { super.bind(moo); } @Override protected double computeValue() { return Math.sqrt(moo.getValue()); } };  
    以下是与可选方法Binding.getDependencies()Binding.dispose()实现相同的示例。
       final ObservableDoubleValue moo = ...; DoubleBinding foo = new DoubleBinding() { { super.bind(moo); } @Override protected double computeValue() { return Math.sqrt(moo.getValue()); } @Override public ObservableList<?> getDependencies() { return FXCollections.singletonObservableList(moo); } @Override public void dispose() { super.unbind(moo); } };  
    从以下版本开始:
    JavaFX 2.0
    另请参见:
    BindingNumberBindingDoubleExpression
    • 构造方法详细信息

      • DoubleBinding

        public DoubleBinding​()
    • 方法详细信息

      • addListener

        public void addListener​(InvalidationListener listener)
        说明从接口Observable复制
        添加一个InvalidationListener ,当Observable变得无效时,它将被通知。 如果同一个监听器被多次添加,那么它将被多次通知。 也就是说,没有检查确保唯一性。

        请注意,相同的实际InvalidationListener实例可以安全地注册到不同的Observables

        Observable存储对侦听器的强烈引用,这将阻止侦听器被垃圾回收,并可能导致内存泄漏。 建议在使用后通过调用removeListener取消注册监听器,或使用WeakInvalidationListener的实例避免此情况。

        Specified by:
        addListener在接口 Observable
        参数
        listener - listener注册
        另请参见:
        Observable.removeListener(InvalidationListener)
      • removeListener

        public void removeListener​(InvalidationListener listener)
        说明从界面Observable复制
        从监听器列表中删除给定的监听器,当Observable的值变为无效时通知Observable

        如果给定的侦听器以前没有被注册过(即它从未被添加过),那么这个方法调用是一个无操作的。 如果以前已经添加,那么它将被删除。 如果多次添加,那么只有第一次出现将被删除。

        Specified by:
        removeListener在接口 Observable
        参数
        listener - 要删除的侦听器
        另请参见:
        Observable.addListener(InvalidationListener)
      • addListener

        public void addListener​(ChangeListener<? super Number> listener)
        说明从界面ObservableValue复制
        添加一个ChangeListener ,当ObservableValue的值更改时,它将被通知。 如果同一个监听器被多次添加,那么它将被多次通知。 也就是说,没有检查确保唯一性。

        请注意,相同的实际ChangeListener实例可能会安全注册为不同的ObservableValues

        ObservableValue存储对侦听器的强烈引用,这将阻止侦听器被垃圾回收,并可能导致内存泄漏。 建议在使用后通过调用removeListener注销监听器,或使用WeakChangeListener的实例避免此情况。

        Specified by:
        addListener在接口 ObservableValue<Number>
        参数
        listener - listener注册
        另请参见:
        ObservableValue.removeListener(ChangeListener)
      • removeListener

        public void removeListener​(ChangeListener<? super Number> listener)
        说明从界面ObservableValue复制
        从监听器列表中删除给定的监听器,当ObservableValue的值发生变化时通知ObservableValue

        如果给定的侦听器以前没有被注册过(即它从未被添加过),那么这个方法调用是一个无操作的。 如果以前已经添加,那么它将被删除。 如果多次添加,那么只有第一次出现将被删除。

        Specified by:
        removeListener在接口 ObservableValue<Number>
        参数
        listener - 要删除的侦听器
        另请参见:
        ObservableValue.addListener(ChangeListener)
      • bind

        protected final void bind​(Observable... dependencies)
        开始观察更改的依赖关系。 如果其中一个依赖关系的值发生变化,则绑定被标记为无效。
        参数
        dependencies - 依赖关系观察
      • unbind

        protected final void unbind​(Observable... dependencies)
        停止观察更改的依赖关系。
        参数
        dependencies - 停止观察的依赖关系
      • dispose

        public void dispose​()
        默认实现为 dispose() ,为空。
        Specified by:
        dispose接口 Binding<Number>
      • get

        public final double get​()
        返回computeValue()的结果。 仅当绑定无效时才调用方法computeValue() 如果绑定从上一次调用get()无效,则缓存并返回结果。
        Specified by:
        get在接口 ObservableDoubleValue
        结果
        当前值
      • onInvalidating

        protected void onInvalidating​()
        如果此绑定变为无效,那么onInvalidating()方法可以被扩展类覆盖。 默认实现为空。
      • invalidate

        public final void invalidate​()
        描述从接口Binding复制
        将绑定标记为无效。 这迫使重新计算Binding下一次请求的值。
        Specified by:
        invalidate在接口 Binding<Number>
      • isValid

        public final boolean isValid​()
        说明从界面Binding复制
        检查绑定是否有效。
        Specified by:
        isValid在接口 Binding<Number>
        结果
        true如果 Binding有效,否则为 false
      • computeValue

        protected abstract double computeValue​()
        计算此绑定的当前值。

        扩展DoubleBinding必须提供computeValue的实现。

        结果
        当前值
      • toString

        public String toString​()
        返回此 DoubleBinding对象的字符串表示形式。
        重写:
        toStringObject
        结果
        这个 DoubleBinding对象的字符串表示形式。