Вы можете увидеть код ниже.
В основном у меня есть 2 кнопки
- Добавить > Добавляет строку в demoPane
- Удалить > Удаляет строку из demoPane
Когда я нажимаю кнопку «Добавить», все идет нормально... Добавляется линия, а затем добавляется и прямоугольник.
Когда я нажимаю «Удалить», строка удаляется из demoPane, но при удалении прямоугольника выдается следующее исключение:
Код: Выделить всё
-Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Children: duplicate children added: parent = AnchorPane[id=demoPane]
at javafx.scene.Parent$2.onProposedChange(Unknown Source)
at com.sun.javafx.collections.VetoableListDecorator.remove(Unknown Source)
at demo.Delete.lambda$2(Delete.java:63)
Код: Выделить всё
private static void mountDemo(AnchorPane demoPane) {
Button buttonAdd = new Button("Add");
Button buttonRemove = new Button("Remove");
Line line = new Line(100, 100, 400, 100);
Rectangle rectangle = new Rectangle(20, 20);
demoPane.getChildren().add(buttonAdd);
demoPane.getChildren().add(buttonRemove);
buttonAdd.setOnMouseClicked((event)->demoPane.getChildren().add(line));
buttonRemove.setOnMouseClicked((event)->demoPane.getChildren().remove(line));
line.parentProperty().addListener((observable, oldParent, newParent)->{
if(newParent != null)
((Pane)newParent).getChildren().add(rectangle);
else
((Pane)oldParent).getChildren().remove(rectangle);
});
}
Подробнее здесь: https://stackoverflow.com/questions/320 ... texception
Мобильная версия