kotlin - 当字符串变量更改 TornadoFX 时更改 TextArea 文本
问题描述
我有一个带有字符串变量的控制器,我希望 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
}
...
}
解决方案
这是我知道如何完成此任务的最快方法,但我真的不知道您要使用哪种设计模式:
class MyView: View() {
val controller: MyController by inject()
override val root = vbox {
textarea(controller.myTextProperty)
}
}
class MyController: Controller() {
val myTextProperty = SimpleStringProperty()
}
注入方法会在 TornadoFX 范围内自动找到控制器,如果没有找到,则在第一次引用它时创建一个。TornadoFX 文本区域构建器函数在作为参数传入时将字符串属性从控制器绑定到 TextArea。但请记住,在文本区域中写入现在将自动更改控制器属性中的值,反之亦然。如果您不想要该功能,则必须更新您的问题以更具体地满足您的需求。
推荐阅读
- python - 即时编译为字节码/本机代码
- facebook-graph-api - 如何在 Firebase 云功能中正确执行 axios POST 请求
- apache-kafka - NiFi 的 ConsumeKafka_2_0 支持带有 ScramLoginModule 的 JAAS SASL
- java - java - 将复杂的 java 对象转换为 json
- linux - 如何通过管道将终端命令输出到 Zenity 进度对话框文本?
- ios - 如何使用cordova将自定义框架添加到“链接框架和库”?
- mysql - 优化 mySQL 查询 - 更新 JOIN 2 表
- php - 将递归数组转换为二维数组
- c++ - 我是否需要保护仅在同一线程中修改的变量的读取?
- java - 创建与zookeeper服务器的连接时如何指定超时