1

我对 Java 很陌生,我在 Internet 上搜索一种将外部 csv 加载到 JavaFX TableView 的简单方法。我能够将 CSV 解析为一个数组,但我现在不知道如何处理它。然后我在玩 DataFX 库。但是再次无法将解析的 csv 传递到我的表中。我想我不太了解 ObservableLists 我认为这是必要的吗?你知道一个好的教程,或者你能解释一下解析文件后的下一步是什么吗?谢谢

编辑:这就是我所做的

import javafx.application.Application;  
import javafx.scene.SceneBuilder;  
import javafx.scene.control.TableColumn;  
import javafx.scene.control.TableView;  
import javafx.stage.Stage;  
import org.javafxdata.datasources.reader.FileSource;  
import org.javafxdata.datasources.provider.CSVDataSource; 

public class CSVTableSample extends Application {  
  @SuppressWarnings("unchecked")  
  @Override  
  public void start(Stage stage) throws Exception {  
       stage.setTitle("Test App");  
       // Just loading the file...  
       FileSource fs = new FileSource("test.csv");  
       // Now creating my datasource 
       CSVDataSource dataSource = new CSVDataSource(  
                 fs, "order-id", "order-item-id");  
       @SuppressWarnings("rawtypes")  
       TableView table1 = new TableView();  
       TableColumn<?, ?> orderCol = dataSource.getNamedColumn("order-id");  
       TableColumn<?, ?> itemCol = dataSource.getNamedColumn("order-item-id");    
       table1.getColumns().addAll(orderCol, itemCol);  
       table1.setItems(dataSource);  
       stage.setScene(SceneBuilder.create().root(table1).build());  
       stage.show();  
  }  
  public static void main(String[] args) {  
       Application.launch(args);  
  }  
}  

eclipse 说 for table1.setItems(dataSource);

TableView 类型中的方法 setItems(ObservableList) 不适用于参数(CSVDataSource)

4

2 回答 2

2

这里有一个用于制表符分隔文件的示例解决方案。一个 csv 文件可以类似地处理。

该示例通过声明 的类型来工作,TableView使得TableView<ObservableList<StringProperty>>中的每一行TableView都是ObservableList字符串属性,其中每个属性表示 csv 文件中的一个字段。的列表是此类列表的列表 TableView。s 为每一列设置从支持该单元格的行中提取该列的正确单元格值。itemscellValueFactoryObservableList<StringProperty>

于 2012-12-10T23:53:22.703 回答
1

TableView 类型中的方法 setItems(ObservableList) 不适用于参数(CSVDataSource)

改变你的线路

table1.setItems(dataSource);

table1.setItems(dataSource.getData());

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

如果你想用标准的 javafx 方式来做:看这里

于 2012-12-11T21:57:38.113 回答