当前位置: 首页 > 面试题库 >

JavaFX TableView动态列和数据值

储俊英
2023-03-14
问题内容

我正在使用JavaFX使用一个简单的CSV
Viewer测试自己,并且无法填充表格数据。我确实动态创建了列,但是数据值是不行的。我在网上搜索后发现了几种方法,但是所有方法都包括带有自定义类(包括获取/设置)的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!
}

问题答案:

使用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


 类似资料:
  • 动态和实时数据 为了动态增加或者移除数据到图表,有多种方法允许你增加或者移除条目对象到一个存在的数据集或者从数据集对象到一个存在的ChartData对象。 类DataSet(和所有的子类): addEntry(Entry e): 增加给出的条目对象到DataSet 类ChartData(和所有的子类) addEntry(Entry e, int dataSetIndex): 增加给的条目到数据集,

  • 问题内容: 考虑这个简单的例子 我想编写一个以数据框和列为输入的函数。 现在这有效: 这也适用: 但这 失败了 怎么了 我担心使用某些 链接 可能会产生一些细微的错误(https://pandas.pydata.org/pandas- docs/stable/indexing.html#why-does-assignment-fail-when-using-chained- indexing )

  • 我有三类,像故事,电影故事,照片 我想显示数据类别明智的数据从数据库 1.故事*data1*data2*data3 2.电影故事*data1*data2*data3 控制器: 型号: 查看: 数据库: 创建表home_page: 创建表(int(11)not NULLAUTO_INCREMENT,int(11)DEFAULT NULL,int(11)DEFAULT NULL,text,

  • 在“数据管理”页面,点击数据列表右侧的“操作”-“动态”按钮进入该功能 。 动态数据功能,可以记录数据的额外信息,例如历史巡检,拜访记录,不同维度数据展示等。每个数据可以有多个动态。 添加动态模板 在弹出窗口页面,首先点击左下方“新增”按钮,此时会新弹出一个新窗口,在上方输入动态数据名称,下方输入相应字段,最后单击保存按钮,即可将该动态模板添加到数据中。以此类推可以对数据添加多个动态。最后还需单击

  • 问题内容: 我有以下SQL查询,其中创建的列不按顺序,我不太确定如何解决它。 我相信它与查询的这一部分有关系: 我曾尝试弄乱本主题中发布的答案,但无法运行查询。我希望有人能提供帮助。 编辑 我只是注意到我的行是乱序的,也想按[客户ID]进行排序。 问题答案: 您可以通过在设置字符串时添加来调整动态数据透视查询中字段的顺序: 更新:首先错过了,使用时必须先使用子查询,然后再使用: 如果您不能简单地使