[問題] SwingWorker 比較好的用法
我在 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
推
08/09 03:54, , 1F
08/09 03:54, 1F
→
08/09 18:54, , 2F
08/09 18:54, 2F
推
08/10 16:39, , 3F
08/10 16:39, 3F
→
08/10 16:42, , 4F
08/10 16:42, 4F