2017-06-13 78 views
1

我是kotlin和tornadoFX的新手。 在TornadoFX指南,一個切換按鈕可以用下面的建立:tornadoFX togglebutton沒有文本屬性

togglebutton("OFF").action { text = if (isSelected) "ON" else "OFF" } 

但是,當我同一代碼複製到我的IDE,有錯!

codes from guide copied to my IDE

似乎有在tornadoFX在切換按鈕沒有文字的財產?

回答

3

看來我們有點急於用新的.action語法更新指南,所以本指南中的示例實際上是錯誤的。正確的代碼是:

togglebutton("OFF") { 
    action { 
     text = if (isSelected) "ON" else "OFF" 
    } 
} 

究其原因,指南中的例子是錯誤的,是當你調用togglebutton("OFF").action { .. },那麼action {}this裏面實際上是圍繞的容器,而不是按鈕。

對於不在按鈕本身上操作的操作,簡短的語法很好,但是如果您需要操作按鈕,則需要使用完整的語法,以便您的代碼在按鈕上下文中執行。

在另一方面,它可能是更地道創建stringbinding代表按鈕狀態,而不是在行動回調手動更新它:

togglebutton { 
    val stateText = selectedProperty().stringBinding { 
     if (it == true) "ON" else "OFF" 
    } 
    textProperty().bind(stateText) 
} 
+0

我明白了。非常感謝! – CSY

+0

不客氣。感謝每一個報告的問題和問題:) –