Я хочу динамически добавлять новые строки на основе номера ввода из текстового поля. Я подготовил эту строку (textField и comboBox) в fxml (построитель сцен) вне видимой области видимости.Добавление дублирующих объектов в GridPane как новую строку
Поэтому у меня есть ссылка на эти объекты, которые я хочу добавить:
@FXML
private ComboBox fieldType;
@FXML
private TextField fieldName;
И на основе числа от другого TextField Я добавление строк gridPane:
for (int i = 0; i < newRows; i++) {
grid.addRow(grid.impl_getRowCount(), fieldName, fieldType);
}
Я получаю это исключение:
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Children: duplicate children added: parent = Grid hgap=0.0, vgap=5.0, alignment=TOP_LEFT
Я думал, что я буду клонировать эти объекты, как это:
public class CloningMachine implements Cloneable {
private Node node;
public CloningMachine() {
}
public CloningMachine setNode(Node node) {
this.node = node;
return this;
}
public Node getNode() {
return node;
}
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
for (int i = 0; i < newRows; i++) {
grid.addRow(grid.impl_getRowCount(), ((CloningMachine)new CloningMachine().setNode(fieldName).clone()).getNode(), ((CloningMachine)new CloningMachine().setNode(fieldType).clone()).getNode());
}
Однако я получаю такое же исключение.
Возможно ли это сделать? Thanks
Вы не можете добавить узел дважды в граф сцены. Вам нужно создать новые экземпляры ComboBox и TextField и добавить их в новую строку. При необходимости вы можете скопировать значения из уже существующих узлов. – ItachiUchiha
В конце концов, я создал новые экземпляры, как вы сказали. – Wlad