Создать кнопку addRow для ObservableList
уважаемые коллеги! Работаю над созданием кнопки, при нажатии на которую в ObservableList добавлялся бы новый элемент, обновлённый лист должен отображаться в TableVier. В программе несколько таблиц, каждая из которых содержит свой список.
Вот код из моего контролера:
@FXML private ObservableList<Plant> plantData;
@FXML
protected void onClickAddPlant(ActionEvent e) {
TableViewPlant tv = new TableViewPlant();
this.table = tv.getTable().getSelectionModel().getTableView();
this.plantData = tv.getTable().getSelectionModel().getTableView().getItems();
this.plantData.add(new Plant("23","errweg"));
this.plantData.add(new Plant("24","erjweg"));
this.plantData.add(new Plant("22","erwmeg"));
this.table.refresh();
changePlant.setText(String.valueOf(plantData.size()));
} ```
Такую зависимость указала в конструкторе объекта
```numberRidgeColumn.setCellValueFactory(cellData -> cellData.getValue().numberRidgeProperty());
nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
wateringColumn.setCellValueFactory(cellData -> cellData.getValue().wateringLastElementProperty());
mineralizationColumn.setCellValueFactory(cellData -> cellData.getValue().mineralizationLastElementProperty());
deoxidationColumn.setCellValueFactory(cellData -> cellData.getValue().mulchingLastElementProperty());
mulchingColumn.setCellValueFactory(cellData -> cellData.getValue().deoxidationLastElementProperty());
sedationColumn.setCellValueFactory(cellData -> cellData.getValue().sedationLastElementProperty());
harvestinColumn.setCellValueFactory(cellData -> cellData.getValue().harvestingLastElementProperty()); ```
В качестве проверки того, что строки добавились, на соседнюю кнопку помещаю текст с размером листа. Из чего я вижу, что в лист элементы добавлены, но в таблице не обновлены.
В документации по ссылке https://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGHGBD нашла следующий пример аналогичной кнопки
```table.setItems(data);
table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
final TextField addFirstName = new TextField();
addFirstName.setPromptText("First Name");
addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
final TextField addLastName = new TextField();
addLastName.setMaxWidth(lastNameCol.getPrefWidth());
addLastName.setPromptText("Last Name");
final TextField addEmail = new TextField();
addEmail.setMaxWidth(emailCol.getPrefWidth());
addEmail.setPromptText("Email");
final Button addButton = new Button("Add");
addButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
data.add(new Person(
addFirstName.getText(),
addLastName.getText(),
addEmail.getText()));
addFirstName.clear();
addLastName.clear();
addEmail.clear();
}
}); ```
Пример очень похож на мой код. Не вижу, что я сделала не так, почему таблица не обновляется. Подскажите, если у вас есть идеи. Буду благодарна за помощь.