JavaFX TableView 动态列和数据值

标签 java swing user-interface tableview javafx

我正在使用 JavaFX 使用简单的 CSV 查看器来测试自己,但我一直在填充表格数据。我确实动态创建了列,但数据值是不行的。我在网上搜索并找到了几种方法,但所有方法都包括带有自定义类的 ObservableList(包括 get/set),它在 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());

引用:Introduction to DataFX

编辑: 标准 JavaFX 方式

替换你的代码:

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 动态列和数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332212/

相关文章:

Java - PriorityQueue 与排序的 LinkedList

Java正则表达式: why numbers [0-9],逗号等不是unicode吗?

java - 图像在 netbeans 中不旋转

user-interface - 按值从 scrollarea 中选择行 - applescript ui,lync 自动化

java - 使用html时JLabel消失

java - 在 Mac OSX 上从 GitHub 编译 Scala 项目 - 加载 : net. java.games.input.OSXEnvironmentPlugin

java - 获取 Map 's value object' 字段的总和

java - 如何将 JLabel 与 JTextField 同步?

linux - unix/Xserver 上的最小公分母 GUI 库

java - 将 hibernate-search 添加到现有系统的依赖项会导致 NoSuchFieldException