datepicker - 在 Kotlin TornadoFX 上获取日期选择器日期

标签 datepicker kotlin tornadofx

我正在为 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绑定(bind)到 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 ,要分离 UI 和逻辑,请参阅: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!")
            }
        }
    }      
}

关于datepicker - 在 Kotlin TornadoFX 上获取日期选择器日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48004940/

相关文章:

android - LocationServices getFusedLocationProviderClient无法正常工作

android - Kotlin 类没有从 firebase 获取其 bool 值

kotlin - 为什么我的 tornadoFX ObservableList 没有收到更新?

WPF:DatePicker 文本垂直居中

jquery - Bootstrap 日期选择器无法使用格式和开始日期

javascript - 带有 Highstocks/Highcharts 的 jQuery 日期选择器

gradle - 如何使用 Kotlin 和 Tornado FX 设置 Gluon 应用程序

javascript - html5 输入元素 "date"- 如何显示日历元素

java - Kotlin - 从 Java 转换时出现 IndexOutOfBoundsException

javafx - 带有 TestFX 的 TornadoFX 在每个 TestCase 后关闭 View