5

这似乎是一个简单的问题,但我只能得到单元格的真实值,而不是显示文本,因为我使用 tableColumn.setCellFactory 来更改单元格的显示文本(使用一种方法将真实值转换为我不想要的文本),所以单元格将有 2 个值:显示文本和实际值。我可以重新转换,但这是一个愚蠢的解决方案:(

cell = t.getColumns().get(col).getCellData(row);
4

3 回答 3

1

您无法直接访问渲染器。其中一个原因是您必须访问包含显示节点的 VirtualFlow。但是,我给你一个答案,你发布的详细信息:

为了实现不可知的导出功能(到 CSV、XLS 等),从表格视图请求单元格文本而不是数据会非常方便。那可能吗?

对于任何类型的导出,请使用转换器。

你永远不知道你的用户有什么目标格式。您的用户在 JavaFX 应用程序中的数字格式设置可能与他们在 Excel 中的不同。使用 Excel,您需要获取 JavaFX 模型数据并设置 Excel 的模型数据。不要使用视图数据导出并期望在 Excel 视图中导入会起作用,你会遇到问题。

CSV 也一样。例如,如果您使用德语本地化,那么在您的表中,2 位小数将看起来像 123,45 而不是 123.45。因此,当您导出表格的视图数据时,您将破坏 CSV 格式。

您将无法通过适当的转换器导出模型数据。

于 2016-02-16T02:24:39.093 回答
0

您可以使用 getItems() 方法来访问 Table 的模型。根据行 ID,您可以获得该行的 DataModel。

tblSampleTable.getItems().get(rowId);

所以你有对 DataModel 的引用,这意味着你可以访问所有数据(实际数据)

于 2012-12-31T11:10:37.137 回答
0

如果您需要获取 TableView 的显示文本,您可以这样做:

public void showAllText(TableView<?> tv){
     for (Node r: tv.lookupAll(".table-row-cell")) {
          for (Node c: r.lookupAll(".table-cell")) {
              TableCell<?, ?> tc=(TableCell<?, ?>) c;
              System.out.print(tc.getText()+" \t ");                                      
          }
          System.out.println("");
     }

}

祝你好运。

于 2019-02-18T02:27:33.710 回答