- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我使用 Kotlin 和 Java 开发桌面应用程序,GUI 是使用 JavaFX 制作的。我有几个基本的 UDP 服务器(Kotlin 线程)监听不同的端口以通过网络接收数据。连接工作正常。
我可以想到几种(或多或少复杂的)线程和 GUI Controller 之间通信的方法,但我想知道是否有某种默认方法,我根本不知道.
我正在寻找一种简单的方法,将“消息”从线程发送到 Controller ,以便更改标签上的某些文本或类似的内容。
最佳答案
使用Platform.runLater
不在 JavaFX 线程上时,使用 Platform.runLater
调用最终更新 GUI 的方法。
这样做将安排 runLater
中包装的代码稍后在 JavaFX 应用程序线程上执行。
由于JavaFX系统被设计为单线程系统,因此这是让系统一致工作所必需的。
JavaFX 中更高级别的并发支持
JavaFX 还有 higher level concurrency support使用诸如Task
之类的东西通过 updateMessage
等方法提供一些通信支持。在 Task 内的实现级别,updateMessage
仅在内部使用 Platform.runLater
,但在其实现中包含一些额外的优化,以使其使用起来简单高效。
通常,Tasks 和 Platform.runLater 有不同的(有时是互补的)焦点,请参阅 Javafx: Difference between javafx.concurent and Platform.runLater? 。
特别是,对于您要求 UDP 服务器监听多个端口并向 GUI 反馈信息的要求,直接调用 runLater
可能是比使用 JavaFX 任务更合适的解决方案。
其他问题的答案
However binding might work in my case
如果未将调用包装在 Platform.runLater
调用中,请勿使用绑定(bind)、修改属性或从另一个线程触发更改监听器。
绑定(bind)和更改监听器不适用于多线程环境(例如,如果您同时修改不同线程上的绑定(bind)或更改监听器,结果可能是不可预测的)。另外,如果您的绑定(bind)或更改监听器最终触发 JavaFX 应用程序线程对 Activity 场景图的更改,则结果可能再次无法预测,因为场景图并非设计用于以这种方式使用。
At the moment I don't get how I should use the runLater() since I have no access to the relevant GUI elements from the thread class.
一些不同的选项:
runLater
调用中修改它们(这是您的设计修改)或runLater
),该类确实了解 GUI 元素并可以进行适当的更改或 runLater
将可观察属性写入共享模型类。正如您所见,在所有情况下,最终都会使用 runLater 来安排涉及稍后在 JavaFX 线程上运行的 GUI 的工作,以强制系统内的线程安全。在所有情况下,如果您无法直接访问 GUI 元素,则需要与可以直接访问 GUI 元素的东西进行通信,以便它可以代表您进行任何必要的修改。
关于java - 如何在线程和 GUI 之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379148/
我有一个 PowerBI Online 数据集,它是在 PowerBI 桌面中创建然后在线发布的。到目前为止,一切都很好。 我通过 PowerBI pusblish 从 Excel 连接到数据集,按预
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我必须对一些太大而无法放入内存的数据训练分类模型,我正在使用 scikit learn 和 pandas 来进行分析。所以这是我的问题,如何在在线学习管道中使用验证来调整超参数? 我使用带有chuck
我正在开发一个应用程序,该应用程序将从 webservice 获取数据和图像并将其存储在设备中以供离线使用。同时,应用程序会将一些数据存储在 sqlite db 中,并将一些图像作为默认数据。 这是应
是否可以使用 FileReader API 和 onprogress 事件访问随 HTML5 传入的数据? 如果是这样,是否有 MD5 或其他快速散列算法的“在线”版本,以便我可以在文件完全读取之前开
希望任何人都可以帮助我更改下面的代码,我的临时文件包含以下代码: Temp=8.4* Humidity=70.4% 代替代码 Temp = 24 *C, Hum = 40 % 适用于以下脚本。 我需
我必须创建一个功能类似于联系人应用程序的应用程序。您可以在客户的 iPhone 上添加一个联系人,它应该会上传到客户的 iPad 上。如果客户在他们的 iPad 上更新联系人,它应该会在他们的 iPh
在 gitlab.com 上审查 merge 请求时,有时我必须在完成 merge 之前进行 rebase。 在 gitlab 上按“Rebase”后,我有一个特定的管道步骤失败,因为它无法验证用户的
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我正在尝试在 azure 上托管 SQL 服务器以与节点应用程序进行通信。我已经成功地完成了创建数据库服务器和数据库本身的过程。现在,我想编辑我的数据库结构。据我发现online ,应该有一种方法可以
我在 Quickbooks Intuit 开发人员 API 中使用 Oauth 2 获得了访问 token 。 范围是 com.intuit.quickbooks.accounting 我能够使用 Q
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
是否可以使Angular Material progress spinner与文本并大致与字符的大小一致地显示? 我想要类似的东西: please wait 微调器仅与“请稍候”文本成行出现。 这可
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个每天运行的Powershell脚本。今天它失败了,因为我正在使用的域 Controller 不可用。在继续执行脚本的其余部分之前,我想确保可以连接到可用的DC。 $LdapServer = "
我想制作一款在线 Flash 游戏,它将具有社交功能,但游戏玩法将主要是单人游戏。例如,屏幕上不会同时出现两个玩家,社交互动将通过异步消息进行,不会有实时聊天或其他任何内容。大部分逻辑将发生在客户端中
这几天我开始在线玩OpenShift。我部署了一个非常简单的“Hello World”Java 示例(1 行代码!),没有任何依赖项(没有 Spring!)命令行是这样的: oc.exe new-a
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
所以我一直在网上学习Java(初学者),并且我一直在尝试制作一个用于制作矩形的类文件。但是,我的在线 java 评估器指出它找不到实例变量。 This is the comment on it.我的代
我是一名优秀的程序员,十分优秀!