torgadoFX togglebutton не имеет текстового свойства

Я новичок в kotlin и tornadoFX. В TornadoFX Guide можно создать ToggleButton со следующим:

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

Но когда я копирую одни и те же коды в свою IDE, это неправильно!

коды из руководства, скопированного в мою IDE

Кажется, что нет текстового свойства в togglebutton в tornadoFX?

Кажется, мы очень хотели обновить руководство с помощью нового синтаксиса .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) } 
Intereting Posts
Почему Kotlin не может вывести следующий аргумент лямбда (после преобразования Java -> Kotlin)? Как суммировать несколько элементов после группировки в Котлине Как открыть ссылки, не связанные с URL веб-браузера в браузере из приложения 5.1 Сбой – основной цвет задачи TaskDescription должен быть непрозрачным Какой способ лучше, если я надеюсь использовать синтаксис, как статическая функция в Котлин? Преобразовать тип с нулевым значением в его тип, не содержащий NULL? При использовании setcontentview в BottomsheetDialog возникает ошибка, например: «ни одна из следующих функций не может быть вызвана с предоставленными аргументами» rx.Scheduler не может быть предоставлен без @ Provides- или @ Produces-аннотированного метода Сокращенный синтаксис для генерации метода toString () в Котлине (для не-данных классов) Тест инструмента Android с помощью Espresso не работает: NoSuchMethodError get () в javax.inject.Provider Сделать HTTP-запрос при нажатии кнопки в Kotlin Коллекции Kotlin бросают ClassNotFoundException на Android Использование типа общего класса в Котлине Объявить окончательное удовольствие в интерфейсе Как передать и получить значение из фрагмента и активности андроид kotlin