UI在JavaFx中没有响应

时间:2017-05-09 10:14:32

标签: java windows user-interface javafx parallel-processing

我们有与网络设备集成的应用程序,用于提高性能和调整相关功能。

我们正在使用JavaFx For UI,当我连接到网络设备时,为了登录并获得响应,UI显示“无响应”。

任何人都可以建议如何克服这个问题。Login screen shows not respongding

2 个答案:

答案 0 :(得分:1)

UI没有响应,因为程序正在连接到网络设备,并且UI正在同一Thread中运行。您需要启动一个新的Thread来连接网络设备。当UI和网络设备的连接在两个不同的线程中时,UI不会冻结。

class YourThread extends Thread{  
    public void run(){  
        // Your code to connect to network device
    }

    public static void main(String args[]){  
        YourThread thread = new YourThread();   
        thread.start();  
    }  
}

答案 1 :(得分:1)

通过缓慢且不稳定的通道(例如(但不限于)网络)完成的任何I / O必然会给出不响应的用户界面。因此,任何重要的I / O都应该在一个单独的线程中完成。

您拥有的一些选项是:

  • 开始一个新主题
  • 创建JavaFX TaskService,提供最简单的用户反馈和任务进度反馈集成
  • 使用java 8' CompletableFuture或其链
  • 使用反应式编程(或多或少是CompletableFuture)

另请参阅:Concurrency in JavaFX