以当前格式从Table Cell检索数据

时间:2014-04-08 06:12:33

标签: javafx-2 tableview

我的TableView中有一个DateTime列,它以不同的格式显示为选中状态。我为此实现了自定义cellfactory。现在我正在尝试将表数据导出到文件中。

我的问题是DateTime列是以UTC格式而不是表格中显示的。

如何在屏幕上显示来自tablecell的精确字符串?

1 个答案:

答案 0 :(得分:0)

简短的回答是你不能(至少,没有一些丑陋的黑客)。您可能希望保存表中所有行的数据,并且无法保证表中的所有行都有一个TableCell(在大多数情况下,不会有)。

您真正想要做的是在TableCell和“保存到文件”功能之间共享格式化功能。只需重构您的单元工厂,以便将格式代码移动到某个方法,然后在保存到文件时调用您的方法。

E.g。

private String formatDateTime(DateTime dateTime) {
    // ...
}

dateTimeCol.setCellFactory(new Callback<TableColumn<MyDataType, DateTime>, TableCell<MyDateType, DateTime>>() {
    @Override
    public TableCell<MyDataType, DateTime> call(TableColumn<MyDataType, DateTime> col) {
        return new TableCell<>() {
            @Override
            public void updateItem(DateTime dateTime, boolean empty) {
                 if (empty) {
                     setText("");
                 } else {
                     setText(formatDateTime(dateTime));
                 }
            }
        };
    }
});

private void saveToFile() {
    for (MyDataType data : table.getItems()) {
         DateTime dateTime = data.getDateTime();
         String formattedDateTime = formatDateTime(dateTime);
         // output data...
    }
}
相关问题