使用 listener 和 DoubleProperty 获取变化量

Get change amount with listener and DoubleProperty

如果将侦听器添加到 DoubleProperty,是否可以像使用 Observable 列表那样将 DoubleProperty 更改的数量传递给侦听器?

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

我假设 DoubleProperty 你的意思是 javafx.beans.property.DoubleProperty

与其使用 InvalidationListener,不如使用 javafx.beans.value.ChangeListenerChangeListener 是具有此方法的功能接口:

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

它为您提供旧值和新值以及作为更改来源的 ObservableValue

因为 DoubleProperty 是一个 ObservableValue(它扩展了 Observable),它有一个重载方法来添加 ChangeListeneraddListener(ChangeListener<? super T>)。但是请注意,DoublePropertyObservableValue<Number>,这意味着 oldValuenewValue 的类型将是 Number.


正如@Zephyr 在评论中指出的那样,我错过了您也在寻找两个值之间的差异这一事实。虽然现在这很简单,因为您可以访问旧值和新值(正如您在评论中提到的那样),但我将在此处举一个例子 completeness/so 我完全回答了这个问题。

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