当我向Java MapProperty添加第二个侦听器时,似乎都没有响应。
MapProperty<String, String> mp =
new SimpleMapProperty<String, String>(
FXCollections.observableHashMap());
mp.addListener((obv1, ov1, nv1) -> {
System.out.format("1: mp: %s%n", nv1);
});
mp.put("key1", "object1");
mp.addListener((obv2, ov2, nv2) -> {
System.out.format("2: mp: %s%n", nv2);
});
mp.put("key2", "object2");
在第二个addListener之后,它停止打印。输出是:
1: mp: {key1=object1}
当我注释掉添加第二个mp.addListener时,它会打印两个添加内容。
1: mp: {key1=object1}
1: mp: {key2=object2, key1=object1}
我做错了吗?
答案 0 :(得分:0)
好吧,如果你添加一个没有做任何事情的空MapChangeListener(或者做某事的那个),它似乎解决了这个问题。
mp.addListener(new MapChangeListener<String, String>() {
@Override
public void onChanged(Change<? extends String, ? extends String> map) {}
});
现在输出符合预期。
1: mp: {key1=object1}
1: mp: {key2=object2, key1=object1}
2: mp: {key2=object2, key1=object1}
似乎支持它是一个错误。