有没有一种方法可以让TableView中的列显示正确的日期,而不是:
java.util.GregorianCalendar[time=?areFieldsSet=false...
我想知道,因为像在“日期”列上那样显示它很烦人,并且不得不在“日期”和“ GregorianCalendar”之间切换,这很麻烦。
首先,我强烈建议您使用java.time
API,而不要使用旧类(例如java.util.Calendar
和java.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
并使用进行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));
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句