我知道JavaFX严重限制了对给定父级添加多次的节点。代码段似乎是合理的......
parent.getChildren().add(node1);
parent.getChildren().add(node1);
...将在第二次调用时抛出异常,因为该节点不能多次包含在父节点中。
然而,我的问题有点模糊。以下代码来自Pane的子类。
if (this.getChildren().contains(foo)) {
System.out.println("WARNING" + /* some other info about foo */);
} else {
System.out.println("all okay");
}
this.getChildren().remove(foo);
this.getChildren().add(foo); // this still throws an exception
这是打印的错误日志:
all okay
all okay
all okay
...
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Children: duplicate children added: parent = CardList@63eddf37
我不确定是什么原因造成的,或者它可能是JavaFX中的一个错误。我的应用程序没有使用任何多线程,即使它确实如此,JavaFX也非常能控制其线程安全。
如果有人能够提供一些有关导致此问题的见解,我们将不胜感激。