Изменить текст TextArea при изменении строковой переменной TornadoFX - PullRequest
0 голосов
/ 28 марта 2020

У меня есть контроллер со строковой переменной, и я хотел бы, чтобы текстовое значение TextArea изменялось при изменении строковой переменной контроллера.

class MyView: View() {
...
   button("Run Test").action {
      runAsync {
          for(test in testList){
              controller.updateText = "running" + test.name
              run(test)
          }
      }    
   }
...
   scriptRanArea = textarea {
      text = controller.updateText
   }
...
}

1 Ответ

0 голосов
/ 29 марта 2020

Это самый быстрый способ, которым я знаю, как выполнить sh, но я действительно не знаю, какой шаблон проектирования вы хотите использовать:

class MyView: View() {
   val controller: MyController by inject()

   override val root = vbox {
      textarea(controller.myTextProperty)
   }
}

class MyController: Controller() {
   val myTextProperty = SimpleStringProperty()
}

Метод ввода автоматически находит контроллер в Область TornadoFX или создает область, если она не найдена, когда на нее впервые ссылаются. Функция построителя текстовой области TornadoFX связывает свойство строки из контроллера с TextArea, когда оно передается в качестве параметра. Имейте в виду, однако, что запись в текстовой области теперь автоматически изменит значение в свойстве контроллера и наоборот. Если вы не хотите использовать эту функцию, вам придется обновить ваш вопрос, чтобы он был более точным c для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...