2017-12-28 16 views
0

Ich studiere die Grundlagen von TornadoFX für Kotlin. Ich habe diesen Code:Get datapicker Datum auf 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!") 
       } 
      } 
     } 
    } 
} 

wenn die Taste gedrückt wird, würde Ich mag das Datum vom Benutzer ausgewählt nehmen.

wie kann ich tun?

Antwort

2

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

thank you very much !!! – matteo