是否有一种简单的方法可以在DatePicker的编辑器字段中显示日期?
喜欢“Wednessday,2014年11月26日”而非“26.11.2014”?
最好的问候
答案 0 :(得分:2)
您需要更改日期选择器的默认格式化程序。为此,有一个合适的格式化程序:DateTimeFormatter
。阅读它here。
根据您的要求,我们需要这种模式:
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, d.MM.uuuu", Locale.ENGLISH);
现在,我们可以设置自定义LocalDate
转换器:
@Override
public void start(Stage primaryStage) {
DatePicker datePicker=new DatePicker();
datePicker.setValue(LocalDate.now());
datePicker.setConverter(new StringConverter<LocalDate>() {
@Override
public String toString(LocalDate object) {
return object.format(formatter);
}
@Override
public LocalDate fromString(String string) {
return LocalDate.parse(string, formatter);
}
});
StackPane root = new StackPane(datePicker);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
请注意,格式化程序有两种工作方式:从弹出窗口中选择日期时,它会使用toString()
对其进行格式化以在编辑器字段中显示,并且当您编辑此字段以输入新的本地日期时,它会尝试使用LocalDate
将其解析为有效的fromString()
。如果它无效,它将恢复最后一个有效日期。