Javafx pane.getchildren (). Удалить (ребенка) бросает нелегальныеJAVA

Программисты JAVA общаются здесь
Anonymous
Javafx pane.getchildren (). Удалить (ребенка) бросает нелегальные

Сообщение Anonymous »

Я пытаюсь создать компонент, который регистрирует слушателя на родителе линии и при изменении, он добавляет /удаляет прямоугольник на родителе линии. /> Удалить> Удалить линию из demopane < /li>
< /ul>

Я также регистрирую слушатель онлайн -родитель, как я уже объяснил. Из демопана, но при удалении прямоугольника он брошен следующим исключением: < /p>

-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)
< /code>

Это происходит в строке 63, где я удаляю прямоугольник из demopane < /p>

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);
});
}
< /code>

Может ли кто -нибудь помочь мне с этим? Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/320 ... texception

Вернуться в «JAVA»