Eine Lösung wäre eine LocalDate
Eigenschaft auf die DatePicker
, wie diese gebunden zu haben sein:
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!")
}
}
}
}
}
Die andere Lösung wäre, hat die DatePicker
Instanz in Ihrer Klasse, und dann den Wert nimmt von ihnen, wie folgt aus:
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!")
}
}
}
}
}
Zusätzlich können Sie eine ViewModel
, implementieren UI und Logik zu trennen, siehe: Editing Models and Validation
Auch kann die Art des Codes verbessert werden: Sie können mit dem VBox, wie dies direkt arbeiten:
class MainView : View() {
override val root = vbox {
datepicker {
value = LocalDate.now()
}
button("Choose date") {
textFill = Color.GREEN
action {
println("Button pressed!")
}
}
}
}
thank you very much !!! – matteo