JavaFX pane.getChildren().remove(child) выдает IllegalArgumentExceptionJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JavaFX pane.getChildren().remove(child) выдает IllegalArgumentException

Сообщение Anonymous »

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

Вы можете увидеть код ниже.
В основном у меня есть 2 кнопки
  • Добавить > Добавляет строку в demoPane
  • Удалить > Удаляет строку из demoPane
Я также регистрирую прослушиватель в родительской строке, как я уже объяснял.< /p>

Когда я нажимаю кнопку «Добавить», все идет нормально... Добавляется линия, а затем добавляется и прямоугольник.

Когда я нажимаю «Удалить», строка удаляется из 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)
Это происходит в строке 63, где я удаляю прямоугольник из demoPane

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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