我的TableView中有一个DateTime列,它以不同的格式显示为选中状态。我为此实现了自定义cellfactory。现在我正在尝试将表数据导出到文件中。
我的问题是DateTime列是以UTC格式而不是表格中显示的。
如何在屏幕上显示来自tablecell的精确字符串?
答案 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...
}
}