2017-12-28 30 views
0

私はKornのTornadoFXの基礎を勉強しています。 私はこのコードを持っている:ボタンが押されたときにKotlin TornadoFXでdatepickerの日付を取得

class MainView : View() { 
    override val root = vbox() 

    init { 
     with(root) { 
      datepicker { 
       value = LocalDate.now() 
      } 
      button("Choose date") { 
       textFill = Color.GREEN 
       action { 
        println("Button pressed!") 
       } 
      } 
     } 
    } 
} 

、私は、ユーザーが選択した日付を利用したいと思います。

どうすればいいですか?

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インスタンスを持っているだろうし、それから値を取る、:

答えて

2

一つの解決策は、このように、DatePickerにバインドLocalDate性質を持っているだろう

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

また、あなたが見る、UIとロジックを分離するために、ViewModelを実装することができます:Editing Models and Validation

このような10

また、あなたのコードのスタイルを向上させることができます:あなたはこのように、VBoxのを直接操作することができます

class MainView : View() { 
    override val root = vbox { 

     datepicker { 
      value = LocalDate.now() 
     } 

     button("Choose date") { 
      textFill = Color.GREEN 
      action { 
       println("Button pressed!") 
      } 
     } 
    }  
} 
+0

はどうもありがとうございました!!! – matteo

関連する問題