use DataFX , which will simplify your work :)
Code example:
DataSourceReader dsr1 = new FileSource("your csv file path"); String[] columnsArray // create array of column names you want to display CSVDataSource ds1 = new CSVDataSource(dsr1,columnsArray); TableView tableView = new TableView(); tableView.setItems(ds1.getData()); tableView.getColumns().addAll(ds1.getColumns());
Link: Introduction to DataFX
Edit: Standard JavaFX path
replace your code:
for(List<String> dataList : data) { table1.setItems(dataList);
from
// which will make your table view dynamic ObservableList<ObservableList> csvData = FXCollections.observableArrayList(); for(List<String> dataList : data) { ObservableList<String> row = FXCollections.observableArrayList(); for( String rowData : dataList) { row.add(rowData); } cvsData.add(row); // add each row to cvsData } table1.setItems(cvsData); // finally add data to tableview
invariant
source share