javafx在tableview中准确显示单元格的文本

时间:2012-12-25 12:39:24

标签: tableview javafx

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

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

3 个答案:

答案 0 :(得分:1)

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

  

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

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

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

CSV相同。如果你是e。 G。在德语本地化上,2位小数将在您的表中看起来像123,45而不是123.45。因此,当您导出表格的观看数据时,您将打破CSV格式。

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

答案 1 :(得分:0)

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

tblSampleTable.getItems().get(rowId);

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

答案 2 :(得分: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("");
     }

}

祝你好运。