给定一个侦听器添加到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

由于DoublePropertyObservableValue(扩展了Observable),因此具有用于添加ChangeListener的重载方法:addListener(ChangeListener<? super T>)。但是请注意,DoublePropertyObservableValue<Number>,这意味着oldValuenewValue的类型将是Number



正如@Zephyr在评论中指出的那样,我错过了您也在寻找两个值之间的差异这一事实。尽管这很简单,但是您可以访问旧值和新值(如您在评论中所提到的),在这里我将举一个完整的示例,以便我完全回答这个问题。

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

关于java - 通过监听器和DoubleProperty获取更改量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51032498/

10-10 17:07