我正在为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!")
}
}
}
}
}
按下按钮时,我想拍摄用户选择的日期。
我该怎么办?
答案 0 :(得分:2)
一种解决方案是将LocalDate
属性绑定到DatePicker
,如下所示:
class MainView : View() {
private val dateProperty = SimpleObjectProperty<LocalDate>()
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
,以分隔用户界面和逻辑,请参阅:Editing Models and Validation
此外,您的代码样式可以改进:您可以直接使用VBox,如下所示:
class MainView : View() {
override val root = vbox {
datepicker {
value = LocalDate.now()
}
button("Choose date") {
textFill = Color.GREEN
action {
println("Button pressed!")
}
}
}
}