Я вытаскиваю ResultSet из базы данных MySQL и пытаюсь динамически строить TableView в событии с ключом. Он отлично работает в первый раз, когда я его запускаю, но все последующие времена он создает дубликаты моих начальных столбцов при изменении данных строки для каждого столбца в соответствии с новым ResultSet. Я хочу, чтобы TableView очищался полностью каждый раз при выполнении этой функции сборки.Повторяющиеся столбцы в JavaFX TableView
for(int i = 0; i < rs.getMetaData().getColumnCount(); i++)
{
final int j = i;
TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i + 1));
col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableView.getColumns().addAll(col);
System.out.println("Column ["+i+"] ");
}
while(rs.next())
{
ObservableList<String> row = FXCollections.observableArrayList();
row.removeAll(row);
for(int i = 1; i <= rs.getMetaData().getColumnCount(); i++){
row.add(rs.getString(i));
}
System.out.println("Row [1] added " + row);
data.add(row);
}
tableView.setItems(data);
Что я пробовал:
- Наблюдая значение ObservableList данных, которая является пустой, как это пересоздан каждый раз функция выполняется
- Очистка столбцов в TableView с использованием tableView.getColumns .removeAll()