JavaFX2。将外部CSV加载到TableView中

JavaFX2。将外部CSV加载到TableView中,csv,tableview,javafx,Csv,Tableview,Javafx,我是Java新手,我在互联网上搜索一种将外部csv加载到JavaFXTableView的简单方法。 我能够将CSV解析为一个数组,但我不知道现在该如何处理它。然后我在玩DataFX库。但我还是无法将解析后的csv传递到我的表中。 我想我真的不理解这里的观察者,我认为这是必要的?你知道一个好的教程吗?或者你能解释一下解析文件后接下来的步骤是什么吗? thx 编辑:我就是这么做的 import javafx.application.Application; import javafx.scene

我是Java新手,我在互联网上搜索一种将外部csv加载到JavaFXTableView的简单方法。 我能够将CSV解析为一个数组,但我不知道现在该如何处理它。然后我在玩DataFX库。但我还是无法将解析后的csv传递到我的表中。 我想我真的不理解这里的观察者,我认为这是必要的?你知道一个好的教程吗?或者你能解释一下解析文件后接下来的步骤是什么吗? thx

编辑:我就是这么做的

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);  
  }  
}  
导入javafx.application.application;
导入javafx.scene.SceneBuilder;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.stage.stage;
导入org.javafxdata.datasources.reader.FileSource;
导入org.javafxdata.datasources.provider.CSVDataSource;
公共类CSVTableSample扩展应用程序{
@抑制警告(“未选中”)
@凌驾
public void start(Stage)引发异常{
stage.setTitle(“测试应用程序”);
//正在加载文件。。。
FileSource fs=newfilesource(“test.csv”);
//现在创建我的数据源
CSVDataSource数据源=新的CSVDataSource(
fs,“订单id”、“订单项目id”);
@抑制警告(“原始类型”)
TableView table1=新的TableView();
TableColumn orderCol=dataSource.getNamedColumn(“订单id”);
TableColumn itemCol=dataSource.getNamedColumn(“订单项id”);
表1.getColumns().addAll(orderCol,itemCol);
表1.集合项目(数据源);
stage.setScene(SceneBuilder.create().root(表1.build());
stage.show();
}  
公共静态void main(字符串[]args){
应用程序启动(args);
}  
}  
eclipse表示表1.setItems(数据源)

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

有一个用于制表符分隔文件的方法。 csv文件也可以进行类似的处理

该示例将
TableView
的类型声明为
TableView
,这样
TableView
中的每一行都是字符串属性的
observeList
,其中每个属性表示csv文件中的一个字段。
TableView
items
列表就是此类列表的列表
cellValueFactory
s为每列设置从支持该单元格行的
ObservableList
中提取该列的正确单元格值

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

换线

table1.setItems(dataSource);

使用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方式进行开发:

你能告诉我们你尝试过什么吗?检查这个链接这仍然是datafx中的一个类吗???@JasonWeh我不知道,我现在不是用javafx开发的,请用最新的代码编辑:)根据我的编译错误和快速搜索判断,现在不再有了
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());