Обратите внимание, что у вас есть значение для l oop в методе clickSubmit
, поэтому каждый раз, когда нажимается кнопка отправки, весь список будет проходить по циклу, и каждый элемент будет добавляться в VBox.
При первом нажатии clickSubmit
в списке будет только один элемент, поэтому одна метка будет добавлена в VBox. При втором щелчке по списку будет два элемента, поэтому в VBox будут добавлены две метки more , первая из которых будет добавлена в первый раз.
См. проблема? Содержимое VBox не очищается автоматически в начале clickSubmit
, что вы могли предположить.
Одно из решений - добавить только одну метку каждый раз, только для нового элемента:
public void clickSubmit() {
int hr = Integer.parseInt(txtHours.getText());
int min = Integer.parseInt(txtminutes.getText());
Compute compute = new Compute(hr, min);
list.add(compute);
showVBox.getChildren().add(new Label(compute.toString()));
}
В качестве альтернативы clear
VBox перед добавлением всех меток:
public void clickSubmit() {
// note this line:
showVBox.getChildren().clear();
int hr = Integer.parseInt(txtHours.getText());
int min = Integer.parseInt(txtminutes.getText());
Compute compute = new Compute(hr, min);
list.add(compute);
for(int x = 0; x < list.size(); x++) {
showVBox.getChildren().add(new Label(list.get(x).toString()));
list = new ArrayList<>(copyList);
}
}
Ваш пример 2 «работает», потому что вы очищаете список (да, это то, что origList= new ArrayList<>(copyList);
делает) каждый раз, поэтому список почти всегда пуст.