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

Is there a way to use the GregorianCalendar on the JavaFX TableView?

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

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

我想知道,因为让它像我拥有的​​日期列上那样显示很烦人,而且不得不在日期和公历日历之间切换变得混乱和烦人。

首先,我强烈建议使用 java.time API,而不是传统的 类,例如 java.util.Calendarjava.util.Date

在任何情况下,您都可以通过在列上使用单元格工厂来更改给定列中单元格中数据的显示方式。如果您的单元格值工厂正在生成 Calendar 个实例,您大概有

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 API,你用LocalDate and use a DateTimeFormatter表示一个日期来做格式化:

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