看板 java 關於我們 聯絡資訊
這個問題很明顯是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
sbrhsieh:把遞迴函式移到 GUI thread 更是錯誤。 01/03 01:05
sbrhsieh:正確做法應該是在 worker thread 跑那個遞迴函式 01/03 01:07
sbrhsieh:函式中需要操作UI組件,把操作包起來queue到UI thread做 01/03 01:10