有没有办法在JavaFX TableView上使用GregorianCalendar?

时间:2018-04-20 17:06:26

标签: java javafx javafx-8 gregorian-calendar java.util.calendar

有没有办法让TableView中的列显示正确的日期而不是:

java.util.GregorianCalendar[time=?areFieldsSet=false...

我想知道,因为它在我所拥有的Date列上显示的情况令人恼火,并且必须在Date和GregorianCalendar之间切换,这样会让人感到麻烦和讨厌。

1 个答案:

答案 0 :(得分:3)

首先,我强烈建议您使用iterator,而不是java.util.DateCalendar等遗留类。

在任何情况下,您都可以通过使用列上的单元工厂来更改给定列中单元格中数据的显示方式。在您的单元格值工厂生成TableColumn<MyTableType, Calendar> dateColumn ; // ... dateColumn.setCellValueFactory(...); 个实例的情况下,您可能已经

DateFormat dateFormat = DateFormat.getDateInstance();
dateColumn.setCellFactory(col -> new TableCell<MyTableType, Calendar>() {
    @Override
    protected void updateItem(Calendar date, boolean empty) {
        super.updateItem(date, empty);
        if (empty) {
            setText(null);
        } else {
            setText(dateFormat.format(date.getTime()));
        }
    }
});

您还可以

java.time

如果您使用上述TableColumn<MyTableType, LocalDate> dateColumn ; // ... dateColumn.setCellValueFactory(...); DateTimeFormatter dateFormat = DateTimeFormatter.ISO_LOCAL_DATE; dateColumn.setCellFactory(col -> new TableCell<MyTableType, LocalDate>() { @Override protected void updateItem(LocalDate date, boolean empty) { super.updateItem(date, empty); if (empty) { setText(null); } else { setText(dateFormat.format(date)); } } }); API,则表示日期为java.time API,并使用LocalDate进行格式设置:

$config['sess_match_useragent'] = FALSE;