Проблема в том, что вы создаете метку «результат» для каждого автомобиля, который у вас есть в listOfCars
.Таким образом, ваша первая строка listLayout.getChildren().removeAll(result)
удалит только последнюю созданную метку.Если в вашем списке 10 автомобилей, вы создадите 10 объектов Label, но на последний можно будет ссылаться через result
.
Если вы хотите удалить все созданные вами ярлыки (и никаких других элементов управления)Я предлагаю вам ввести подкласс Label
:
class CarLabel extends Label {
CarLabel(String str) {
super(str);
}
}
А затем в вашем handle
методе:
public void handle(ActionEvent event) {
listLayout.getChildren().removeIf(CarLabel.class::isInstance);
Collections.sort(listOfCars, ListYears.yearCom);
for(Object o : listOfCars) {
result = new CarLabel(o.toString());
result.setTranslateX(20);
result.setTranslateY(-40);
listLayout.getChildren().add(result);
}
}