Я предполагаю, что 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"...
});