Intereting Posts
Ошибка при загрузке приложения IBM Bluemix Cloud Foundry SpringBoot Enum.valueOf в Котлине Kotlin – абстрактная функция с общим типом возврата Эквивалент эквивалента C ++ в Котлине Что такое эквивалент Котлина для поразрядного или с присвоением '| ='? Kotlin: Как заменить уже открытый фрагмент на новый фрагмент в студии Android? Могу ли я отложить привязку вида в адаптере с помощью расширения Kotlin Android Использование LiveData с привязкой данных Высота просмотра равна 0 при определенных условиях при переходе между действиями Ошибка «Переменная должна быть инициализирована» при делегировании инициализированному свойству Joda DateTime Timezone не отображается правильно проект kotlin не может быть построен в градле Как использовать код, который опирается на ThreadLocal с сопрограммами Kotlin Невозможно внедрить один и тот же экземпляр в Сервис и ViewModel Использование типа общего класса в Котлине

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