使用DataFX填充JavaFX TableView

时间:2014-10-15 14:35:32

标签: csv javafx tableview

我正在尝试使用带有datafx扩展名的csv文件中的数据填充TableView。

不幸的是,tableview是空的,我无法在任何地方找到任何表明我的错误的例子。

    DataSourceReader dsr1 = new FileSource("Example3.csv");

    CSVDataSource ds1 = new CSVDataSource(dsr1);
    TableView table1 = new TableView();
    table1.setItems(ds1.getData());
    table1.getColumns().addAll(ds1.getColumns());

    System.out.println("#ds1 " + ds1.getData().size());  //returns zero

代码不会抛出异常,这使它更加神秘。

1 个答案:

答案 0 :(得分:2)

即使问题是使用DataFX扩展来填充TableView,这里是一个没有DataFX的解决方案:

  1. 创建一个表示tableView列表项的类,例如:

    public class YourItem { 
     private String itemID;
     private String itemTitle;
    
     public String getItemID() {
          return itemID;
     }
    
     public void setitemID(String itemID) {
          this.itemID = itemID;
     }
    
     //getter and setter for the other vars, I am lazy. }
    
  2. 解析您的csv文件并返回List<YourItem>

    有几个教程和示例,你可以在这里找到一个: http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/重要的是,您要创建ListYourItem个对象,其中每一行都是YourItem个对象

  3. 将您的List<YourItem>转换为ObservableList<YourItem>

  4. ObservableList<YourItem> obsList = FXCollections.observableArrayList(yourList);

    1. 最后将项目设置为TableView: 我不会提到您需要为TableView创建列

      TableView<YourItem> test = new TableView<YourItem>(); test.setItems(obsList);