我清除所有孩子的Gridpane,然后再将孩子添加到Gridpane,但它说有重复。
public void render(){
boardPane.getChildren().clear();
for(int x = 0; x < xSize; x++){
for(int y = 0; y < ySize; y++){
boardPane.add(blockBoard[x][y], x, y);
}
}
}
blockBoard [x] [y]包含每个渲染周期替换的对象。
Exception in thread "JavaFX Application Thread"
java.lang.IllegalArgumentException: Children:
duplicate children added: parent = Grid hgap=0.0, vgap=0.0,
alignment=TOP_LEFT
at javafx.scene.Parent$2.onProposedChange(Parent.java:454)
at com.sun.javafx.collections.VetoableListDecorator.add
(VetoableListDecorator.java:206)
at javafx.scene.layout.GridPane.add(GridPane.java:965)
at tetris.Game.render(Game.java:121)
答案 0 :(得分:1)
这是因为来自父类的onProposedChange方法的代码
childSet.addAll(newNodes);
if (childSet.size() != newLength) {
throw new IllegalArgumentException(
constructExceptionMessage(
"duplicate children added", null));
}
所以你应该从blockBoard中删除重复的节点。 可能你应该使用TableView来做这些事情。