Как отобразить несколько переменных между собой в ReactFX?
Рассмотрим этот простой пример с ползунками, представляющими операнды (x & y) и их сумму.
public class ThreePropertiesBoundTest
extends Application
{
@Override
public void start(
Stage primaryStage)
throws Exception
{
Slider xSlider = new Slider();
SuspendableVar<Double> x = Var.doubleVar(xSlider.valueProperty()).suspendable();
x.setValue(1d);
xSlider.setShowTickLabels(true);
xSlider.setShowTickMarks(true);
Slider ySlider = new Slider();
SuspendableVar<Double> y = Var.doubleVar(ySlider.valueProperty()).suspendable();
y.setValue(1d);
Slider sumSlider = new Slider();
SuspendableVar<Double> sum = Var.doubleVar(sumSlider.valueProperty()).suspendable();
sum.setValue(1d);
EventStreams.combine(x.changes(), y.changes())
.map(t2 -> t2._1.getNewValue() + t2._2.getNewValue())
.feedTo(sum);
EventStreams.combine(sum.changes(), y.changes())
.map(t2 -> t2._1.getNewValue() - t2._2.getNewValue())
.feedTo(x);
List<Slider> sliders = Stream.of(xSlider, ySlider, sumSlider).peek(it -> {
it.setShowTickMarks(true);
it.setShowTickLabels(true);
}).collect(Collectors.toList());
VBox vBox = new VBox();
vBox.getChildren().addAll(sliders);
Scene scene = new Scene(vBox);
primaryStage.setWidth(600);
primaryStage.setHeight(600);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Я могу связать сумму с ее зависимостями, используя один EventStream. Но как мне сделать обновление значения y при обновлении слайдера z? Приведенный выше код описывает идею, но вызывает стекоперемещение.