我的问题是在使用 JavaFX 实现某种图形可视化时出现的。有 2 个类,称为Vertex和Edge,每条边连接 2 个(可能相同)顶点。每个具有自循环的顶点(具有相同开始和结束顶点的边)都存储 αDoubleProperty作为其自循环的首选角度。该角度是根据该顶点及其所有邻居的位置计算的。但是,由于图是动态构建的,顶点的邻居可能会发生变化,从而导致依赖项的动态列表,因此我必须修改DoubleBinding角度所绑定的依赖项。
然而,created bygetDependencies中的方法只返回一个不可变的副本:DoubleBindingBindings.createDoubleBinding
@Override
public ObservableList<?> getDependencies() {
return ((dependencies == null) || (dependencies.length == 0))?
FXCollections.emptyObservableList()
: (dependencies.length == 1)?
FXCollections.singletonObservableList(dependencies[0])
: new ImmutableObservableList<Observable>(dependencies);
}
Run Code Online (Sandbox Code Playgroud)
尽管该类DoubleBinding有一个bind似乎满足我的需要的方法,但它是受保护的:
protected final void bind(Observable... dependencies) {
if ((dependencies != null) && (dependencies.length > 0)) {
if (observer == null) {
observer = new BindingHelperObserver(this);
}
for (final Observable dep : …Run Code Online (Sandbox Code Playgroud)