在 Java FX 工作线程中不断更新 UI

2023-11-26

I have Label label在我的 FXML 应用程序中。

我希望这个标签每秒改变一次。目前我使用这个:

        Task task = new Task<Void>() {
        @Override
        public Void call() throws Exception {
            int i = 0;
            while (true) {
                lbl_tokenValid.setText(""+i);
                i++;
                Thread.sleep(1000);
            }
        }
    };
    Thread th = new Thread(task);
    th.setDaemon(true);
    th.start();

然而什么也没有发生。

我没有收到任何错误或异常。 我不需要在主 GUI 线程中将标签更改为的值,因此我看不到其中的意义updateMessage or updateProgress方法。

怎么了?


您需要在 JavaFX UI 线程上对场景图进行更改。 像这样:

Task task = new Task<Void>() {
  @Override
  public Void call() throws Exception {
    int i = 0;
    while (true) {
      final int finalI = i;
      Platform.runLater(new Runnable() {
        @Override
        public void run() {
          label.setText("" + finalI);
        }
      });
      i++;
      Thread.sleep(1000);
    }
  }
};
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java FX 工作线程中不断更新 UI 的相关文章

随机推荐

  • 在哪里撤销 Android 上授予的 Google API 权限?

    我正在使用一些示例代码 http code google com p google api java client source browse picasa android sample src main java com google a
  • SignalR + 通过操作方法将消息发布到集线器

    我正在使用 SignalR 的集线器功能 https github com SignalR SignalR 向所有订阅的客户端发布消息 public class NewsFeedHub Hub public void Send string
  • 从文本中删除锚点

    我需要从某些文本中删除锚标记 但似乎无法使用正则表达式来完成此操作 只是锚标记 而不是其内容 例如 a href http www google com target blank google a 会成为google 确切地说 使用正则表达
  • 如何访问用户控件 WinForm 中托管表单上的控件

    在 Visual Studio 中 如何访问托管用户控件的表单上的控件 例如 当用户控件中的文本框中的文本发生更改时 我希望另一个用户控件中的另一个文本框中的文本也发生更改 这两个用户控件都托管在同一窗体上 提前致谢 如果您需要不同的 UI
  • Pandas 将表写入 MySQL:“无法回滚”

    我需要帮助才能使其正常工作 我有一个pd DataFrame df 我需要将其加载到 MySQL 数据库 我不明白错误消息的含义以及如何修复它 任何帮助将不胜感激 这是我尝试过的 import MySQLdb from pandas io
  • 如何查看 Sybase 中的列元数据?

    我有一个同事给我的列列表 但这些列驻留在数据库中的不同表中 Sybase中有某种工具可以查询列所属的表吗 我已经尝试过谷歌搜索这种工具 但到目前为止还没有成功 syscolumns 保存列元数据 从 syscolumns 中选择 其中 na
  • Jupyter Notebook:在代码块中启用垂直滚动

    如何在 jupyter 笔记本的代码块中启用垂直滚动 我以前不小心做过 但现在无法重现 我发现已设置autoscroll true使用文本编辑器在文件本身中 然而 我这样做了 它已经有一个设置 scrolled true 在笔记本中 它只有
  • 如何在 Sass 中使用 Ruby/Rails 变量?

    有没有办法在 Sass 文件中使用 Ruby 应用程序中的变量 您可以将 erb 扩展名添加到 sass 文件中 然后像在常规 erb 文件中一样添加变量 更多信息 http guides rubyonrails org asset pip
  • 如何更改 .vimrc 在 .vim 中的位置

    如何更改 vim 文件夹和 vimrc 文件的位置 以便可以使用两个 或更多 独立版本的 vim 有没有办法在从源代码编译 vim 时进行配置 也许是 feature h 中的一个条目 我为什么要做这样的事情 我必须处理使用 python2
  • 如何知道 matchTemplate 是否找到对象?

    I used this回答并编写了我自己的程序 但我有一个具体的问题 如果图像中没有物体 matchTemplate不会引发错误 而且我不知道有什么方法可以检查是否matchTemplate无论是否找到该对象 任何人都可以给我建议 或者给我
  • 使用 Axis Client API 时未调用将 HTTP 标头添加到 HTTP 请求的处理程序

    我正在使用 Axis API 访问 Axis HTTP 服务器 API的文档可以找到here 我正在使用以下代码将处理程序添加到服务器 service属于 java xml rpc Service 类型 HandlerRegistry re
  • Android:如何以编程方式访问 AVD 管理器中显示的设备序列号(API 版本 8)

    如何以编程方式访问下图中显示的值 这是硬件序列号 要访问它 安卓Q gt SDK 29 android Manifest permission READ PRIVILEGED PHONE STATE是必须的 只有系统应用程序可以需要此权限
  • 如何在Scala 3中使用akka?

    如何在 Scala 3 中使用 akka 使用 scala 3 时找不到 akka 依赖项 sbt 错误 error not found Users admin ivy2 localcom typesafe akka akka actor
  • 在 html 中以正斜杠开头,表示“href”

    我最近开始学习html 真正让我困惑的一件事是为什么有些链接在路径之前有一个正斜杠 而有些链接没有 ie vs dt a href reset index html Reset CSS a dt 一个是相对路径 一个是绝对路径 href 到
  • 使用 Proguard 删除 Google Play 服务库中未使用的类

    我正在尝试摆脱未使用的类Google Play Services图书馆 我已经创建了带有单个空活动的全新 Android 项目 该项目不使用任何来自Google Play Services图书馆 所以我希望 当我构建版本 包括在我的配置中运
  • 为特定应用打开miui省电模式

    我正在开发 VoIP 呼叫应用程序 并且当省电模式打开时 会错过通过 FCM 发送的呼叫MIUI 这种情况经常发生 我希望用户打开Battery saver activity对于我自己的应用程序 并且在省电模式中对该应用程序没有限制 For
  • 在 Node.js 中读取文件

    我对在 Node js 中读取文件感到非常困惑 fs open start html r function err fileToRead if err fs readFile fileToRead encoding utf 8 functi
  • 如何计算以GPS坐标为中心的地球上的圆上的点?

    在 KML 中画一个圆 如何获取地球上某个点的 GPS 坐标 例如以十进制格式 并生成近似于以该点为中心的圆的多边形的坐标 具有 20 多个数据点的多边形看起来像一个圆形 数据点越多 圆就越好看 我正在编写一个生成 KML 的程序 但不知道
  • 从字节数组创建私钥

    有没有办法从字节数组生成私钥 我使用 getEncoded 方法获取了这个字节数组 但现在我必须将其转换回 PrivateKey 谢谢 武克 我也在寻找这个答案 终于找到了 keyBytes 是最初使用 getEncoded 创建的字节数组
  • 在 Java FX 工作线程中不断更新 UI

    I have Label label在我的 FXML 应用程序中 我希望这个标签每秒改变一次 目前我使用这个 Task task new Task