Java 错误 Not on FX Application Thread
本篇文章介绍了 Java 中的 Not on FX application thread 错误。
Java 中的 Not on FX application thread
当我们尝试从不是 FX 线程且应从 FX 线程调用的线程调用方法时,会出现错误 Not on FX application thread
。 对于以前版本的 JavaFX 来说这不是问题。
JavaFX 8 的新实现会发生此错误。在 JavaFX 应用程序中的不同线程中更改用户界面时,会发生此错误。
下面是一个将引发 Not on FX 应用程序线程错误的示例。
Thread DemoThreadShow = new Thread(new Runnable() {
@Override
public void run() {
try {
newthread.setStyle("visibility: true");
Thread.sleep(10000);
Thread.interrupted();
} catch (Exception e) {
thread.setText("" + Integer.valueOf(thread.getText()) + 5);
newthread.setStyle("visibility: false");
}
}
});
DemoThreadShow.start();
上面的代码创建一个线程并向该线程应用一些方法。 这些方法来自 JavaFX 应用程序。
应用 setText 方法时,会抛出错误 Exception in thread "Thread-5" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-5
。
可以对代码进行以下更改来解决此问题。
-
要在处理 FX 应用程序和线程时更改 UI,请使用以下方法。
Platform.runLater(() -> { //GUI STUFF });
Platform.runLater(new Runnable() { @Override public void run() { //GUI STUFF } });
-
我们还可以使用Service和Task而不是Thread。 Service 比 Thread 有更多的功能。
更改任务内的 UI 永远不会引发 Not on FX 应用程序线程错误。 以下是为此目的使用服务和任务的代码示例。
Service New_Service = new Service() { @Override protected Task createTask() { return new Task() { @Override protected Object call() throws Exception { Platform.runLater(() -> { //GUI stuff here }); return null; } }; } }; New_Service.start();
相关文章
Java 中错误 Unsupported Major Minor Version
发布时间:2023/07/14 浏览次数:68 分类:Java
-
出现 Unsupported Major.minor version 错误或 Java.lang.UnsupportedClassVersionError 的原因是运行时 JDK 较低,编译时 JDK 较高。 本篇文章介绍如何解决Java中不支持的major.minor版本。
Java 错误 Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8
发布时间:2023/07/14 浏览次数:200 分类:Java
-
在使用IntelliJ for Java时,无法编译Java程序是一个常见的问题。 本教程提供了此错误的解决方案。Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8 错误
Java 中 Could Not Find Java SE Runtime Environment 错误
发布时间:2023/07/14 浏览次数:149 分类:Java
-
当安装了运行时环境时,即 Java 找不到主 java.dll 文件时,可能会出现“Could not find Java SE Runtime Environment”错误。 本篇文章介绍如何解决 Java 中的“Could not find Java SE Runtime Environment”错误。
修复 Java 错误 java.io.IOException: Stream Closed
发布时间:2023/07/14 浏览次数:121 分类:Java
-
本篇文章我们将找出在 Java 编程中编码时产生 java.io.IOException: Stream Closed 错误的可能原因。 我们还将借助代码示例探索两种可能的解决方案来修复此错误。
Java 中错误 The Superclass Javax.Servlet.Http.HttpServlet Was Not Found on the
发布时间:2023/07/14 浏览次数:88 分类:Java
-
本篇文章介绍如何解决在 Java 中的 javax.servlet.http.HttpServlet" was not found on the Java Build Path 的问题。Java 中 javax.servlet.http.HttpServlet" was not found on the Java Build Path 当我们在 Eclipse 中编写第一个 JSP 代码
Java中 the method is undefined for the type 错误
发布时间:2023/07/14 浏览次数:102 分类:Java
-
本篇文章介绍了 Java 的 the method is undefined for the type 错误。Java 错误 method is undefined for the type 每当我们尝试调用当前类中未定义的方法时,就会出现该类型未定义方法的错误。
Java 错误 Address Already in Use JVM_Bind
发布时间:2023/07/14 浏览次数:179 分类:Java
-
本篇文章介绍了 Java 的地址已在使用 jvm_bind 错误。Java 中的 Address already in use: JVM_Bind 错误 地址已在使用:JVM_Bind 主要发生在我们处理 Web 应用程序时。
修复 Java 中错误 Error: Else Without if
发布时间:2023/07/13 浏览次数:183 分类:Java
-
本篇文章我们将了解在用 Java 编写代码时只说 'else' without 'if' 的错误。 我们还将找出导致此错误的可能原因并找到解决方案。Java 中 error: 'else' without 'if'
Java 错误 Javac Is Not Recognized as an Internal or External Command, Operable
发布时间:2023/07/13 浏览次数:108 分类:Java
-
本文介绍了 Java 的 'javac' is not recognized as an internal or external command, operable program or batch file 的可能原因以及该错误的可能解决方案。 首先,我们来看看 javac 是什么。Java 中的 Javac