迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 错误 Java.Net.SocketException: Network Is Unreachable

发布时间:2023/07/16 浏览次数:963 分类:Java

今天我们就来讨论一下Java编程时出现java.net.SocketException: Network is unreachable异常的可能原因及解决方法。Java中出现java.net.SocketException: Network is unreachable的可能原因及解决方案

Java 错误 Java.Net.ConnectException: Connection Timed Out

发布时间:2023/07/16 浏览次数:235 分类:Java

本篇文章将重点介绍如何使用此包进行基本的网络调用以及可能面临和解决的错误。在 Java 中使用 java.net 进行网络调用 进行网络调用是 Java 开发人员每天面临的最重要的事情之一。

Java 错误 Java.Security.InvalidKeyException: Illegal Key Size

发布时间:2023/07/15 浏览次数:644 分类:Java

本篇文章介绍包含 java.security.InvalidKeyException: Illegal key size 的 Java 代码。 然后,我们将了解其可能的原因。最后,它通过消除指定的错误来引导我们找到解决方案。

Java 中错误 Unsupported Major Minor Version

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

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

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便