tornadoFX togglebutton没有文本属性

我是kotlin和tornadoFX的新手。 在TornadoFX指南中,可以使用以下方法构建ToggleButton:

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

但是,当我将相同的代码复制到我的IDE,这是错的!

指南中的代码复制到我的IDE

似乎tornadoFX中的togglebutton中没有文本属性?

看来我们有点急于用新的.action语法来更新指南,所以指南中的例子实际上是错误的。 正确的代码是:

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

指南中的例子是错误的,因为当你调用togglebutton("OFF").action { .. }this action {}里面的内容实际上是周围的容器,而不是按钮。

对于不在按钮本身上操作的操作,简短的语法没有问题,但是如果您需要操作按钮,则需要使用完整的语法,以便您的代码在按钮上下文中执行。

在另一个说明中,创建一个字符串绑定来表示按钮状态,而不是在动作回调中手动更新它可能更习惯于:

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