如何更改表格单元格中的对象视图? - JavaFx

时间:2016-02-11 16:44:32

标签: java javafx java-8 javafx-8

我的LocalDateTime中有一列TableView

column_AddDate = new TableColumn<MyTableItem, LocalDateTime>(TITLE_ADD_DATE)

但结果 - 2016-02-05T12:26:20.506 - 并不像我这么漂亮。我想使用LocalDateTime类的规则存储和排序表数据,但是使用自定义格式显示它。例如:

formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
formattedDateTime = dateTime.format(formatter); // "2016-02-05 12:26"

首先,我尝试过,是编写自定义class DateTimeForTable extends LocalDateTime并覆盖toString()方法,但LocalDateTime是最终的。

所以,我认为,解决方案是使用setCellValueFactory()方法和类似方法,但我不熟练。

请告诉我,如何实现此功能。

1 个答案:

答案 0 :(得分:4)

要更改数据的呈现方式,而不是数据本身,您应该使用cellFactory。 (我假设你已经安装了cellValueFactory,否则你根本看不到任何数据。注意cellFactorycellValueFactory的补充,它不会取代它。)< / p>

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
column_AddDate.setCellFactory(tc -> new TableCell<MyTableItem, LocalDateTime>() {
    @Override
    protected void updateItem(LocalDateTime item, boolean empty) {
        super.updateItem(item, empty);
        setText(empty ? null : formatter.format(item));
    }
});