推 del680202:看了一下原碼之後 的確是這個原因 感激不盡 03/23 17:43
→ H45:那個...多緒同步在 swing 有好用的 SwingUtilities.invoke.... 03/23 19:12
藉機請問一下,Swing中為了不讓處理時間過長導致整個視窗停住。
所以都會希望寫另一個thread來跑,可是如果是用invokeLater()方法,
那結果它還是會排到EDT裡面,視窗依舊會停住,直到處理完畢。
不過就我所知一般其實都不會這樣做,而是會利用SwingWorker的
doInBackground()方法來作到這樣的效果。
一般來說運作很正常也沒什麼問題,可是發現用了SwingWorker.execute()之後,
一樣會跑出因為多執行序而發生的ArrayIndexOutOfBound的Exception,
(我不確定是不是我有兩個以上的SwingWorker在跑,但我有用一些方法讓
其中一個一定會先執行完畢後在讓另一個開始,另外我的狀況是發生在JTable)
或者是我使用上有什麼疏忽呢?
推 del680202:那個我試過 但是達不到我想要的效果.... 03/23 21:06
另原po的狀況應該可以用SwingWorker的 publish() & process()試試看,
不過會不會有Exception我就不知道了... 應該是不會,應該...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.229.2
※ 編輯: SuM0m0 來自: 118.169.229.2 (03/23 22:09)