簡體   English   中英

Java Swing線程處理:執行邏輯命令時GUI掛起

[英]Java Swing Threading: GUI hangs when logic commands are executed

我目前正在從事一個涉及Parrot AR Drone 2.0 Power Edition控件開發的項目。

為此,我們使用YaDrone庫( https://vsis-www.informatik.uni-hamburg.de/oldServer/teaching/projects/yadrone/ )控制無人機。 圍繞此庫制作了DroneController類,以實現更多控制。 這實質上是托管用於無人機的所有邏輯。

已經在Java Swing中開發了一個GUI,以顯示有關無人機的各種信息。

我們遇到的問題是,在執行程序時,又稱無人機啟動,GUI打開,但是掛起/凍結,直到無人機發送了所有命令並執行了無人機。

顯然,我們希望GUI在將命令發送到無人機的同時進行更新。

我們一直在嘗試SwingUtilities之類的東西,但是沒有運氣。 這是當前的主要類別:

主類該項目的整個代碼可以在這里查看: https : //github.com/tMascagni/CDIO_3/tree/dev (特別是在dev分支中。)

其中最重要的部分是ui軟件包Main.java和DroneController.java。

如果有人對如何解決這個問題有任何想法,我將非常感謝您的反饋!

通常,以下方法將起作用:

   Thread t = new Thread(()->{
      // this code will be executed outside the EDT thread, 
      // and will not make the interface non-responsive
      // ...

      SwingUtilities.invokeLater(()->{
         // and this code will execute once the above code is finished,
         // within the EDT thread, and can report on results
      });
   }).start();

一種更簡化的方法,但實現起來稍微復雜一些,是使用SwingWorker

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM