Обратите внимание, что можно добавить несколько CheckBox
с кодом, который вы опубликовали. Неясно, какой из них должен быть удален. Конечно, вы можете получить доступ к дочерним элементам так же, как и к любым другим элементам списка. Вы, конечно, хотите добавить актерский состав, поскольку children
- это List<Node>
. Если все дочерние элементы vbox
являются CheckBox
es, вы можете просто выполнить итерацию по всем дочерним элементам и удалить все те CheckBox
es, которые выбраны (при условии, что это та функция, которую вы пытаетесь достичь).
vbox.getChildren().removeIf(child -> ((CheckBox) child).isSelected());
Если это не так, вы можете сохранить элементы в поле List<CheckBox>
:
private final List<CheckBox> checkBoxes = new ArrayList<>();
@FXML
public void onAdd(ActionEvent e) {
if (text.getText().isEmpty()) { // alternative: text.getText().equals(""); matches is for regular expressions
CheckBox cb = new CheckBox(text.getText());
vbox.getChildren().add(cb);
checkBoxes.add(cb);
}
}
@FXML
public void onDelete(ActionEvent e) {
Iterator<CheckBox> iter = checkBoxes.iterator();
while (iter.hasNext()) {
CheckBox cb = iter.next();
if (cb.isSelected()) {
// remove from both vbox and checkBoxes
vbox.getChildren().remove(cb);
iter.remove();
}
}
}