在Kotlin TornadoFX上获取datepicker日期

我正在为Kotlin学习TornadoFX的基础知识。 我有这个代码:

class MainView : View() { override val root = vbox() init { with(root) { datepicker { value = LocalDate.now() } button("Choose date") { textFill = Color.GREEN action { println("Button pressed!") } } } } } 

当按下按钮时,我想选择用户选择的日期。

我能怎么做?

一种解决方案是将一个LocalDate属性绑定到DatePicker ,如下所示:

 class MainView : View() { private val dateProperty = SimpleObjectProperty() override val root = vbox() init { with(root) { datepicker(dateProperty) { value = LocalDate.now() } button("Choose date") { textFill = Color.GREEN action { val dateValue = dateProperty.value println("Button pressed!") } } } } } 

另一种解决方案是在你的类中使用DatePicker实例,然后从中获取值,如下所示:

 class MainView : View() { private var datePicker : DatePicker by singleAssign() override val root = vbox() init { with(root) { datePicker = datepicker { value = LocalDate.now() } button("Choose date") { textFill = Color.GREEN action { val dateValue = datePicker.value println("Button pressed!") } } } } } 

此外,您可以实现一个ViewModel来分离UI和逻辑,请参阅: 编辑模型和validation

另外,你的代码风格可以改进:你可以直接使用VBox,像这样:

 class MainView : View() { override val root = vbox { datepicker { value = LocalDate.now() } button("Choose date") { textFill = Color.GREEN action { println("Button pressed!") } } } }