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) } 
  • Невозможно использовать fontawesomefx с kotlin и tornadofx
  • java.lang.ClassNotFoundException: Не нашел класс «com.my.app.example.Main» по пути: DexPathList
  • JavaFX Сброс графического контекста
  • Как установить обработчик кликов в динамическом списке (в tornadofx)
  • Tornadofx - Как передать параметр Fragment на каждый экземпляр
  • Как отменить подписку на события в TornadoFX?
  • Последовательная анимация в TornadoFX?
  • TornadoFX - Создание MVP-дизайна
  • Tornadofx tableview синхронизирует две таблицы
  • Линии рисования из ViewModel TornadoFX
  • Связанные свойства не работают
  • Давайте будем гением компьютера.