作者gp123 (George Peng)
看板java
标题Re: [问题] GUI的动作写在递回里面
时间Wed Jan 2 19:33:15 2013
这个问题很明显是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
1F:→ sbrhsieh:把递回函式移到 GUI thread 更是错误。 01/03 01:05
2F:→ sbrhsieh:正确做法应该是在 worker thread 跑那个递回函式 01/03 01:07
3F:→ sbrhsieh:函式中需要操作UI组件,把操作包起来queue到UI thread做 01/03 01:10