Предположим, у меня есть два свойства, и я хочу связать 3-е, чтобы быть равным вычислению между ними.
В этом примере у меня есть свойство 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
Таким образом, это, кажется, изначально правильно связывается, но result
не обновляется при изменении либо val1
, либо factor
.
Как правильно связать этот расчет?