gpt4 book ai didi

kotlin - TornadoFX:更新 runAsync 中的标签时出错

转载 作者:行者123 更新时间:2023-12-02 13:17:33 26 4
gpt4 key购买 nike

我尝试使用 Kotlin 和 TornadoFX 库中的套接字连接来实现聊天应用程序以制作 GUI。
当我尝试启动客户端时出现问题,因为它一直在等待来自服务器的消息,尽管我将更新标签并接收消息的代码放在 runAsync 中。我红色了 TornadoFX 文档并观看了 youtube 视频,但我无法找到解决方案。
我知道问题是程序卡在那个 block 中,但不知道该怎么做。

    class MyFirstView: View("Chat"){

var input: TextField by singleAssign()
var test = SimpleStringProperty()
val client: Client by inject()

init {
client.connect()
val t = thread(true) {
while (true) {
random = client.getMessage()
println(random)
Platform.runLater { test.set(random) }
}
}
}

override val root = vbox {
hbox {
label(test) {
bind(test)
}
}
hbox {
label("Write here some text")
input = textfield()
}
hbox {
button("Send") {
action{
client.writer.println(input.text)
}
}
}
}
}

最佳答案

您只能在 UI 线程上更新 UI 元素,因此如果您想从后台线程操作 UI,您需要将该特定代码包装在 runLater { } 中。 .

另一方面,您不应该操纵文本字段的文本或使用 singleAssign 存储 ui 元素引用。相反,您应该将文本字段绑定(bind)到 StringProperty 并改为操作该值。这在指南中有所介绍,因此请查看 :)

关于kotlin - TornadoFX:更新 runAsync 中的标签时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62434588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com