【问题标题】:How to edit a Java FXML Pane using a thread (parallel) [duplicate]如何使用线程(并行)编辑 Java FXML 窗格 [重复]
【发布时间】:2020-07-11 17:12:39
【问题描述】:

我有一个函数可以连接到数据库、获取一些数据并使用这些数据更改我的窗格。

我希望在后台输入对查询的引用后运行此函数,并让用户继续填写其他详细信息。

java.lang.IllegalStateException:不在 FX 应用程序线程上; currentThread = Thread-6

我使用了一个线程并不断收到此错误。

到目前为止我发现了什么: 我发现很多人说要使用稍后运行功能。使用此功能可以完成这项工作,但不能正常工作。它等待函数完成执行让用户继续。

我该如何解决这个问题。

【问题讨论】:

  • 错误告诉你一切,不是吗?即:您不得从 fx 应用程序线程更改活动场景图中任何节点的任何属性。看看 javafx 中的并发支持。如果仍然卡住,请返回 minimal reproducible example(模拟数据库)来演示问题。

标签: java multithreading firebase javafx parallel-processing


【解决方案1】:

我假设该函数花费的大部分时间是用于数据库连接,而不是用于编辑窗格。

您在尝试更改另一个线程中的 FXML 元素时遇到 Not on FX application thread 错误,您可以使用 run later 函数仅用于更改窗格。

您可以做的是在另一个线程中执行您的数据库操作,并为 FXML 元素创建一个稍后运行的函数。希望这将加快这一进程。

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 2021-03-28
    • 2014-07-22
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多