注意:我工作了很长时间并研究谷歌和stackoverflow,但我找不到答案。
我在JDialog中使用Thread.sleep()并冻结所有其他JDialog,JFrame和线程。
我的示例代码:
"GEOADD" "report-geo-set" "30.52439985197" "50.56539003041" "john"
在这种情况下,JDialog无法正确显示:
但它必须是这样的:
我该如何解决这个问题。我想让主线程等待另一个线程。有人可以纠正我的示例代码或在这种情况下共享示例代码。
答案 0 :(得分:0)
希望它有助于理解。
答案 1 :(得分:0)
Thread.Sleep()
只是暂停当前线程(即阻止它做任何事情,例如重绘,处理点击等),在你的情况下是UI thread
。
您需要使用工作线程。任何可能需要花费大量时间的主要工作需要在自己的线程中完成,这就是你想要睡觉的线程。它目前与UI组件一起运行,因此这就是您看到它们冻结的原因。
一个很好的参考是swing
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/
以下内容也可能有用:
http://java.sun.com/developer/technicalArticles/Threads/swing/ http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html