【问题标题】:JavaFX UI freeze hangJavaFX UI 冻结挂起
【发布时间】:2011-02-06 21:30:05
【问题描述】:

我的 JavaFX 应用程序的 UI 在连续多次执行 Web 服务调用后冻结。这些进程调用是异步的。

我该如何解决这个问题?有没有办法“解冻”用户界面?

抱歉新手问题。但我非常需要任何人的帮助

【问题讨论】:

  • 真的是异步的吗?请插入调用服务的代码的相关部分。您可以尝试使用 NetBeans JavaFX Composer 数据源来获取服务吗?如果是,是否也将其冻结?更多信息会有所帮助。
  • 它是一个移动应用程序,我正在使用 JavaME 的 Web 服务客户端,因为 Web 服务是 SOAP 并且出于某种原因,JavaFX 的 Web 服务功能不接受基于 SOAP 的 Web 服务。

标签: user-interface javafx


【解决方案1】:

您是否创建了一个线程来执行它? JavaFX 在 EDT(事件调度线程)上执行。这就是您体验 GUI 冻结的原因。这就是你所做的

import javafx.async.*
public class MyWebService extends RunnableFuture {
   public var webserviceURL:String;
   override run(): Void {
     // your web service
   }
}
public class MyWebServiceTask extends JavaTaskBase {
   override create(): RunnableFuture {
      return MyWebService {
         webserviceURL: "http://...."
      };
   }
}

def webserviceTask: MyWebServiceTask = MyWebServiceTask { }
webserviceTask.start();

【讨论】:

  • 我的 UI 在 JavaFX 中,而 Web 服务客户端和其他类在 JavaME 中。为了回答您的问题,在 Java 中创建了一个线程来执行它。我还需要使用您在上面发布的代码吗?
  • 你的线程应该在 Java 中实现 RunnableFuture。在 FX 中使用 MyWebServiceTask 启动它。
  • 这个好像老了,javafx2中好像去掉了async包。
猜你喜欢
  • 2012-11-30
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多