在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!") } } } }