添加多个侦听器时出现JavaFX MapProperty问题

添加多个侦听器时出现JavaFX MapProperty问题,javafx,Javafx,当我向JavaMapProperty添加第二个侦听器时,两个侦听器似乎都没有响应 MapProperty<String, String> mp = new SimpleMapProperty<String, String>( FXCollections.observableHashMap()); mp.addListener((obv1, ov1, nv1) -> { System.out.format("1

当我向JavaMapProperty添加第二个侦听器时,两个侦听器似乎都没有响应

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");
当我注释掉添加第二个mp.addListener时,它会打印这两个添加

1: mp: {key1=object1}
1: mp: {key2=object2, key1=object1}

我做错什么了吗?

如果您添加一个空的MapChangeListener,它什么都不做,或者确实做了什么,那么似乎可以解决问题

mp.addListener(new MapChangeListener<String, String>() {
    @Override
    public void onChanged(Change<? extends String, ? extends String> map) {}
});

似乎支持这是一个bug。

我看到了同样的行为。那对我来说像个虫子。谢谢。我试图提交一个bug,但对于Java FX来说似乎并不容易。要提交bug,只需在注册,然后你就可以提交。我以前在那里,但在你创建帐户并登录之前,你在网站上看不到任何东西,我就是这么做的。再次感谢。我建议您在:处提交错误报告,并编辑您的答案以包含错误报告的链接。在JIRA网站上创建了一个帐户并创建了错误ID RT-39857。还发现问题是由于在添加第二个addListener之前调用put方法引起的。在第二个addListener生成所需输出后,将第一个put移动到。
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}