如何在tornadofx中将日期选择器输入的格式从13/7/2018更改为13-07-2018?

时间:2018-07-13 18:13:32

标签: kotlin tornadofx

Current output of datepicker.

无法设置日期选择器的输入格式。我想将其更改为dd-LL-yyyy。

1 个答案:

答案 0 :(得分:1)

Tornadofx datepicker()主要使用位于 javafx.scene.control.DatePicker.java 中的Java类DatePickerDatePicker源自ComboBoxBase<java.time.LocalDate> 因此该值始终是LocalDate的类型。

要更改格式,有一个在类DatePicker中定义的名为setConverter()的方法,该方法采用类型为StringConverter<LocalDate>的参数。这可以使用 javafx.util.converter.LocalDateStringConverter.java 中定义的LocalDateStringConverter()方法来完成。它基本上需要两个参数来获得功能,并且都是DateTimeFormatter的类型,第一个参数用于格式化,第二个参数用于解析。为了实现我的目标,我已经看到一个格式化程序足以获得所需的输出。

DateTimeFormatter是在 java.time.format.DateTimeFormatter.java 中定义的类,该类是用于打印和解析日期时间对象的格式化程序。其中定义的ofPattern()方法采用类似"dd-MM-yyyy"的字符串模式,这是我在这里想要的。这样我们就可以val dateFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")

现在,我们可以应用setConverter(LocalDateStringConverter(dateFormatter, dateFormatter)),它是对“ java get set方法”的调用,或者我们可以使用{{1 }}。

给出了一个有效的代码段:

converter = LocalDateStringConverter(dateFormatter, dateFormatter)

输出快照:

output of formatted date-picker