[英]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.