JavaFX TableView动态列和数据值

我正在使用JavaFX使用一个简单的CSV

Viewer测试自己,并且无法填充表格数据。我确实动态创建了列,但是数据值是不行的。我在网上搜索后发现了几种方法,但是所有方法都包括带有自定义类(包括获取/设置)的ObservableList,该类在CSV查看器中必须是动态的(CSV可以有任意数量的列,这意味着可以有任意数量的数据值)。

例:

List<String> columns;

List<List<String>> data;

/* Fills 'columns' and 'data' */

parseCSV("C:/list.csv");

int columnIndex = 0;

TableColumn [] tableColumns = new TableColumn[columns.size()];

for(String columName : columns) {

tableColumns[columnIndex++] = new TableColumn(columName);

}

table1.getColumns().addAll(tableColumns);

for(List<String> dataList : data) {

table1.setItems(dataList); // Requires an ObservableList!

}

回答:

使用DataFX,这将使您的工作更轻松:)

示例代码:

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());

参考: DataFX简介

替换您的代码:

for(List<String> dataList : data) {

table1.setItems(dataList); // Requires an ObservableList!

}

  //  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

以上是 JavaFX TableView动态列和数据值 的全部内容, 来源链接: utcz.com/qa/428410.html

回到顶部