9

JavaFXを使用した単純なCSVビューアで自分自身をテストしていますが、テーブルデータの入力に固執しています。列を動的に作成しますが、データ値は使用できません。Webを検索していくつかの方法を見つけましたが、すべての方法にカスタムクラス(get / setを含む)を含むObservableListが含まれています。これは、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!
}
4

2 に答える 2

9

あなたの仕事をより簡単にする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());

参考: 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
于 2012-11-11T20:33:00.183 に答える