使用CSV更新TableView

时间:2013-01-17 22:14:12

标签: java javafx-2 scenebuilder

this question非常相似,我正在尝试更新TableView中的JavaFX。我使用DataFX采用了解决方案。

我的代码:

File file = new File(path);
if(file.exists() && file.canRead()) {
    DataSourceReader dsr1 = new FileSource(file);
    String[] columnsArray = {"firstName", "lastName"}; 
    CSVDataSource ds1 = new CSVDataSource(dsr1, columnsArray);
    System.out.println("CSV : " + ds1.getData().size());  // outputs 0

    //Below is commented out since I don't have data : source of the error
    //tblAthleteList.setItems(ds1.getData());
    //tblAthleteList.getColumns().addAll(ds1.getColumns());
}

以下是我的测试.csv文件的视图:

firstName, lastName
first, last
test, tester

我正在使用JavaFX 2DataFX 1.0并构建e(fx)clipse

修改

稍微更改了代码以使用FileSource(File f)构造函数来查看是否会发生任何变化。结果我试图从CSVDataSource打印一些东西,我总是得到一个NullPointerException。因此,假设CSVDataSource没有得到任何数据。从示例中我可以发现这是正确完成的。我可以使用简单的BufferedReader和循环来读取文件。

编辑2

编辑了这个问题......我现在正在指出错误是因为没有数据从CSVDataSource文件中提取到.csv。第ds1.getData().size()行返回0。发布了一个我正在使用的非常简单的.csv文件。 EOLCR + LF组成,并在Notepad++中编辑(无Excel多余字符)。

1 个答案:

答案 0 :(得分:1)

确保columnsArray中的列名与CSV文件中的列名完全相同(区分大小写)。

当我将列名称year放在代码中但在我的csv文件中Year时,我得到了类似的异常。

根据问题编辑进行更新:

删除文件中,lastName之间的空格,或将" lastName"作为列名放在代码中:)