java - 如何更改表格单元格中对象的 View ? - JavaFx

标签 java javafx java-8 javafx-8

我的 TableView 中有一列 LocalDateTime:

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() 方法和类似的方法,但我对此并不熟练。

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

最佳答案

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

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));
    }
});

关于java - 如何更改表格单元格中对象的 View ? - JavaFx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35345131/

相关文章:

java - 如何实现通过 IMAP 检查新邮件?

JavaFX:添加单击监听器以识别在 TableView 中单击了哪个单元格

java - 从源代码构建 Elasticsearch,但它需要 Java 10

java - Java 8 lambda 语法中大括号何时是可选的?

javascript - Java 8 Lambda 构造和 JavaScript 之间的确切区别是什么?

java - 如何让 Accordion 正确显示动态信息

java - 将用户的字符串输入限制为字母和数字值

javascript - Alfresco:编写工作流程脚本以复制同一文件夹中的文档并使用新文档继续工作流程

切换场景的 JavaFX 问题

css - 从 JavaFX 中删除所有焦点边框