问题:为什么用“oldValue”调用ChangeListener ObservableMap是NewValue的副本?
import javafx.beans.property.SimpleMapProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableMap; public class ObservableMapExample { SimpleMapProperty map; class MyChangeListener implements ChangeListener> { @Override public void changed(ObservableValue> changed, ObservableMap oldValue, ObservableMap newValue) { System.out.println("changed "+changed+" old:"+oldValue+" new:"+newValue); } } ObservableMapExample() { map = new SimpleMapProperty(); map.setValue(new SimpleMapProperty(FXCollections.observableHashMap())); map.addListener(new MyChangeListener()); map.put("a", "1"); map.put("b", "2"); map.put("b", "3"); } public static void main(String[] args) { System.out.println("ObservableMapExample"); new ObservableMapExample(); } }
输出:
ObservableMapExample changed MapProperty [value: MapProperty [value: {a=1}]] old:MapProperty [value: {a=1}] new:MapProperty [value: {a=1}] changed MapProperty [value: MapProperty [value: {a=1, b=2}]] old:MapProperty [value: {a=1, b=2}] new:MapProperty [value: {a=1, b=2}] changed MapProperty [value: MapProperty [value: {a=1, b=3}]] old:MapProperty [value: {a=1, b=3}] new:MapProperty [value: {a=1, b=3}]
因为值本身不变,所以它与添加键值对之前设置的SimpleMapProperty
相同。
如果您逐步查看代码,您将在com.sun.javafx.binding.MapExpressionHelper
中找到这段代码:
@Override
protected void fireValueChangedEvent(MapChangeListener.Change<? extends K, ? extends V> change) {
listener.changed(observable, currentValue, currentValue);
}
ChangeListener
只能通知您映射发生了更改,但它不能告诉您更改了什么,因为值就是映射。
问题:为什么用“oldValue”调用ChangeListener ObservableMap是newValue的副本? 输出:
本文向大家介绍深入理解vue.js中$watch的oldvalue与newValue,包括了深入理解vue.js中$watch的oldvalue与newValue的使用技巧和注意事项,需要的朋友参考一下 $watch中的oldvalue和newValue 大家都知道,在vue.js中给我们提供了$watch的方法来做对象变化的监听,而且在callback中会返回两个对象,分别是oldValue和n
跳过值无效时: 问题:和是,因此无法正确重写。 问题:如何获得不执行检查的类型? 这个问题和这个问题有关。
我不懂pyplot。子地块(330 1 i)
本文向大家介绍ElasticSearch中的副本是什么?相关面试题,主要包含被问及ElasticSearch中的副本是什么?时的应答技巧和注意事项,需要的朋友参考一下 一个索引被分解成碎片以便于分发和扩展。副本是分片的副本。一个节点是一个属于一个集群的ElasticSearch的运行实例。一个集群由一个或多个共享相同集群名称的节点组成。
在过去,我们被明确警告调用是异步的,并且的值在回调或下一个方法之前无效。 使用useState,在显式更新状态后如何获取状态值? 钩子是如何工作的?据我所知,的setter函数不接受回调,例如。 不会导致正在运行回调。 我在旧世界的另一个解决方法是在类上挂起一个实例变量,但这在这里不起作用,因为没有可重用的函数实例(在严格模式下没有)。