这是我第一次使用JavaFx,我只是作为模板使用本教程:http://code.makery.ch/library/javafx-8-tutorial/part3/。
对于我的申请,我使用左侧的2列,电话号码和通话开始日期/时间。我想改变表格中数据的格式,因为它目前正在以yyyy-MM-ddThh:mm为基础。
我似乎无法弄清楚格式化文件的放置位置。我有一个日期格式化程序功能,你可以在上面的链接找到,但它返回一个字符串,它给我错误。谢谢你提供的所有帮助。以下是我正在使用的代码片段。
控制器:
@FXML
private void initialize() {
// Initialize the person table with the two columns.
billingNumberColumn.setCellValueFactory(cellData -> cellData.getValue().billingNumberProperty());
callStartColumn.setCellValueFactory(cellData -> cellData.getValue().callStartProperty());
}
型号:
public LocalDateTime getCallStart() {
return callStart.get();
}
public void setCallStart(LocalDateTime callStart) {
this.callStart.set(callStart);
}
public ObjectProperty<LocalDateTime> callStartProperty() {
return callStart;
}
日期格式:
public static String format(ObjectProperty<LocalDateTime> callStart) {
if (callStart == null) {
return null;
}
return DATE_FORMATTER.format((TemporalAccessor) callStart);
}
答案 0 :(得分:3)
使用cellFactory
。 TextFieldTableCell
提供了一种在给定转换器的情况下创建单元工厂的方法。作为转换器,可以使用LocalDateTimeStringConverter
:
callStartColumn.setCellValueFactory(cellData -> cellData.getValue().callStartProperty());
callStartColumn.setCellFactory(TextFieldTableCell.forTableColumn(new LocalDateTimeStringConverter(DATE_FORMATTER, DATE_FORMATTER)));
答案 1 :(得分:0)
指定列
TableColumn<Person, LocalDateTime> column = new TableColumn<>("Birth");
此代码相当复杂,看起来并不是很好。
确保在空格中没有数据的情况下处理空案例或处理/ null
column.setCellFactory(
new Callback<TableColumn<Person, LocalDateTime>, TableCell<Person, LocalDateTime>>() {
@Override
public TableCell<Person, LocalDateTime> call(TableColumn<Person, LocalDateTime> param
) {
return new TableCell<Person, LocalDateTime>() {
@Override
protected void updateItem(LocalDateTime item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText(null);
setStyle("");
} else {
//FORMAT HERE AND CALL setText() with formatted date string
}
}
};
}
}
);