Java 如何将值绑定到计算结果?
假设我有两个属性,我想将第三个绑定为它们之间的计算 在本例中,我有一个Java 如何将值绑定到计算结果?,java,javafx,Java,Javafx,假设我有两个属性,我想将第三个绑定为它们之间的计算 在本例中,我有一个val1和一个factor属性。我希望result属性绑定到这两个属性的“幂”:result=Math.pow(factor,val1) 下面的MCVE显示了我目前是如何尝试这样做的,但它没有被正确绑定 import javafx.beans.binding.Bindings; import javafx.beans.property.DoubleProperty; import javafx.beans.property.S
val1
和一个factor
属性。我希望result
属性绑定到这两个属性的“幂”:result=Math.pow(factor,val1)
下面的MCVE显示了我目前是如何尝试这样做的,但它没有被正确绑定
import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
public class Main {
private static DoubleProperty val1 = new SimpleDoubleProperty();
private static DoubleProperty factor = new SimpleDoubleProperty();
private static DoubleProperty result = new SimpleDoubleProperty();
public static void main(String[] args) {
// Set the value to be evaluated
val1.set(4.0);
factor.set(2.0);
// Create the binding to return the result of your calculation
result.bind(Bindings.createDoubleBinding(() ->
Math.pow(factor.get(), val1.get())));
System.out.println(result.get());
// Change the value for demonstration purposes
val1.set(6.0);
System.out.println(result.get());
}
}
输出:
16.0
16.0
因此,最初这似乎是正确绑定的,但是当val1
或因子
更改时,结果
不会更新
如何正确绑定此计算?该方法除了它的可调用
之外,还需要一个可观察
变量,表示绑定的依赖关系。仅当所列依赖项之一发生更改时,才会更新绑定。因为您没有指定任何绑定,所以绑定在创建后永远不会更新
要纠正您的问题,请使用:
result.bind(Bindings.createDoubleBinding(
() -> Math.pow(factor.get(), val1.get()),
val1,
factor));
除了它的可调用
,该方法还需要一个可观察
变量,表示绑定的依赖关系。仅当所列依赖项之一发生更改时,才会更新绑定。因为您没有指定任何绑定,所以绑定在创建后永远不会更新
要纠正您的问题,请使用:
result.bind(Bindings.createDoubleBinding(
() -> Math.pow(factor.get(), val1.get()),
val1,
factor));
非常感谢。我看到它接受了varargs,但无法理解它们的用途。回答得很好,谢谢。我看到它接受了varargs,但无法理解它们的用途。回答得很好。