给定一个侦听器添加到DoubleProperty中,是否可以像将Observable列表那样将DoubleProperty更改的量传递给侦听器?
someDoubleProperty.addListener(e -> {
// System.out.println(e.change());
});
最佳答案
我假设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"...
});
关于java - 通过监听器和DoubleProperty获取更改量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51032498/