Re: [問題] GUI的動作寫在遞迴裡面

看板java作者 (George Peng)時間13年前 (2013/01/02 19:33), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串2/4 (看更多)
這個問題很明顯是thread的問題, 由於Swing元件的更新在另一個thread中進行, 而這個thread的優先權很低。 : 我發現函式只會自己跑自己的 : 但JLabel完全沒有反應 : 等到遞迴函式跑完了 : Label才終於顯示最後的狀態 : 可是中途完全沒有任何反應 在你的狀況中, 幾乎要等到遞迴的method執行完後, 才有機會輪到Swing一次更新到最新狀況, 才會造成你看到的結果。 通常不建議在一般的worker thread中直接操作Swing, 長時間的操作中更不合適, 可試著參考 http://slientfreaky.blogspot.tw/2011/09/java-swing.html 的方式, 將你的函式移到GUI的執行緒中進行。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.88.144

01/03 01:05, , 1F
把遞迴函式移到 GUI thread 更是錯誤。
01/03 01:05, 1F

01/03 01:07, , 2F
正確做法應該是在 worker thread 跑那個遞迴函式
01/03 01:07, 2F

01/03 01:10, , 3F
函式中需要操作UI組件,把操作包起來queue到UI thread做
01/03 01:10, 3F
文章代碼(AID): #1Gv1h-1H (java)
討論串 (同標題文章)
文章代碼(AID): #1Gv1h-1H (java)