迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 错误 Not on FX Application Thread

作者:迹忆客 最近更新:2023/07/12 浏览次数:

本篇文章介绍了 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

可以对代码进行以下更改来解决此问题。

  1. 要在处理 FX 应用程序和线程时更改 UI,请使用以下方法。
    Platform.runLater(() -> {
     //GUI STUFF
    });
    
    或者:
    Platform.runLater(new Runnable() {
     @Override
     public void run() {
         //GUI STUFF
     }
    });
    
  2. 我们还可以使用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();
    
    上面的代码是比线程更方便的方式。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中错误 Unsupported Major Minor Version

发布时间:2023/07/14 浏览次数:68 分类:Java

出现 Unsupported Major.minor version 错误或 Java.lang.UnsupportedClassVersionError 的原因是运行时 JDK 较低,编译时 JDK 较高。 本篇文章介绍如何解决Java中不支持的major.minor版本。

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 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'

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便