gpt4 book ai didi

java - 从另一个线程更新 SWT 对象

转载 作者:太空狗 更新时间:2023-10-29 22:49:19 24 4
gpt4 key购买 nike

在我的 Java 应用程序中,当主模块被调用时,我在一个单独的线程中启动我的 SWT GUI。我需要在主线程中执行一些长时间的操作并更新 GUI 线程。当我尝试从主线程更新 GUI 线程时,即更改标签文本或其他内容时,我得到一个 java.lang.NullPointerException。从我在网上读到的是因为 SWT 不允许非 UI 线程更新 UI 对象。如何从主线程更新 GUI 线程。

我在网上找到了一些示例,但它们都处理了 GUI 在主线程中运行而长时间操作在单独线程中的场景。我的情况完全相反。

谁能告诉我如何在 GUI 线程中更新小部件?

最佳答案

简而言之,SWT 是一个单线程 UI 工具包。因此,小部件必须在 SWT 事件线程中更新,就像在 Swing 中一样。因此,您必须使用匿名 Runnable 类调用刷新:

Display.getDefault().asyncExec(new Runnable() {
public void run() {
someSwtLabel.setText("Complete!");
}
});

为了更详细的解释,这个JavaLobby这篇文章很好地介绍了这种线程使用模型。

关于java - 从另一个线程更新 SWT 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4368533/

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