看板 java 關於我們 聯絡資訊
我在 ActionPerformed 的 method 裡有一段 loading 很重的敘述: while( !table.isEmpty() ) { Result result = HEAVY_OPERATION(); // 1 tree.addResult( result ); // 2, tree is a JTree table.remove( result ); } 1 的地方就是會執行很久的部分 因為整個是在 EDT 裡,所以會 hang 住 GUI 我希望把它拿到另一個 thread,return 之後再讓 EDT 去更新 GUI 中間我可以讓 GUI 做其他事,比方說 show progress 之類的 試過原地 new 一個 Thread,好像沒用 找了找資料,好像 SwingWorker 是正解 但是它好像比較適合 one shot 的方式 或是要用 PropertyListener 去監聽 field 不過我不太喜歡把這種暫時變數提升為 field 請問有比較好的做法嗎? -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.248.119
undeadj:什麼叫做把這種暫時變數提升為 field 08/09 03:54
legnaleurc:就把 result 那個變數弄成 private field 08/09 18:54
SuM0m0:直接override doInBackground()回傳result 在done()裡面 08/10 16:39
SuM0m0:再把結果接回去就ok了 不只一次的話就用publish & process 08/10 16:42