JavaFX-8在DatePicker的编辑器中显示日期

时间:2014-11-26 08:07:18

标签: date datepicker javafx-8

是否有一种简单的方法可以在DatePicker的编辑器字段中显示日期?

喜欢“Wednessday,2014年11月26日”而非“26.11.2014”?

最好的问候

1 个答案:

答案 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()。如果它无效,它将恢复最后一个有效日期。