Получите сумму изменений со слушателем и DoubleProperty - PullRequest
0 голосов
/ 26 июня 2018

Учитывая, что слушатель добавлен в DoubleProperty, есть ли способ передать значение DoubleProperty, измененное для слушателя, как вы можете сделать с помощью списка Observable?

someDoubleProperty.addListener(e -> {
 // System.out.println(e.change());
});

1 Ответ

0 голосов
/ 26 июня 2018

Я предполагаю, что DoubleProperty вы имеете в виду javafx.beans.property.DoubleProperty.

Вместо использования InvalidationListener используйте javafx.beans.value.ChangeListener.ChangeListener - это функциональный интерфейс с этим методом:

void changed​(ObservableValue<? extends T> observable, T oldValue, T newValue)

, который дает вам старое значение и новое значение вместе с ObservableValue, который является источником изменения.

Поскольку DoubleProperty является ObservableValue (что расширяет Observable), у него есть перегруженный метод для добавления ChangeListener: addListener(ChangeListener<? super T>).Однако обратите внимание, что DoubleProperty - это ObservableValue<Number>, что означает, что тип oldValue и newValue будет Number.


Как указано @Zephyr вкомментарии, я упустил тот факт, что вы также ищете разницу между двумя значениями.Хотя теперь это просто, поскольку у вас есть доступ к старым и новым значениям (как вы упоминаете в комментариях), я приведу здесь пример для полноты / поэтому я полностью отвечу на вопрос.

someDoubleProperty.addListener((observable, oldValue, newValue) -> {
    double diff = newValue.doubleValue() - oldValue.doubleValue();
    // Do something with "diff"...
});
...