public interface Binding<T> extends ObservableValue<T>
Binding
calculates a value that depends on one or more sources. The
sources are usually called the dependency of a binding. A binding observes
its dependencies for changes and updates its value automatically.
While a dependency of a binding can be anything, it is almost always an
implementation of ObservableValue
. Binding
implements ObservableValue
allowing to use it in another binding.
With that one can assemble very complex bindings from simple bindings.
All bindings in the JavaFX runtime are calculated lazily. That means, if a dependency changes, the result of a binding is not immediately recalculated, but it is marked as invalid. Next time the value of an invalid binding is requested, it is recalculated.
It is recommended to use one of the base classes defined in this package
(e.g. DoubleBinding
) to define a custom binding, because these
classes already provide most of the needed functionality. See
DoubleBinding
for an example.
DoubleBinding
Modifier and Type | Method and Description |
---|---|
void |
dispose()
Signals to the
Binding that it will not be used anymore and any
references can be removed. |
ObservableList<?> |
getDependencies()
Returns the dependencies of a binding in an unmodifiable
ObservableList . |
void |
invalidate()
Mark a binding as invalid.
|
boolean |
isValid()
Checks if a binding is valid.
|
addListener, getValue, removeListener
addListener, removeListener
boolean isValid()
true
if the Binding
is valid, false
otherwisevoid invalidate()
Binding
next time it is request.ObservableList<?> getDependencies()
ObservableList
. The implementation is
optional. The main purpose of this method is to support developers during
development. It allows to explore and monitor dependencies of a binding
during runtime.
Because this method should not be used in production code, it is
recommended to implement this functionality as sparse as possible. For
example if the dependencies do not change, each call can generate a new
ObservableList
, avoiding the necessity to store the result.
void dispose()
Binding
that it will not be used anymore and any
references can be removed. A call of this method usually results in the
binding stopping to observe its dependencies by unregistering its
listener(s). The implementation is optional.
All bindings in our implementation use instances of
WeakInvalidationListener
, which means usually
a binding does not need to be disposed. But if you plan to use your
application in environments that do not support WeakReferences
you have to dispose unused Bindings
to avoid memory leaks.
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 2008, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.