Как отобразить несколько переменных между собой в 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? Приведенный выше код описывает идею, но вызывает стекоперемещение.

0 ответов

Другие вопросы по тегам