Thread.Sleep()冻结了

use*_*159 1 java applet

这是一个片段

kit.insertHTML(doc, doc.getLength(), "Hello", 0, 0, null);
try{
Thread.sleep(1000);
}catch(Exception e){}
Run Code Online (Sandbox Code Playgroud)

我正在使用HTMLEditorKit()HTMLDocument()作为文本框.文本框应该显示"Hello"然后等待一秒然而,当我尝试这个时,它等待一秒然后把单词"Hello"这不是我想要的.

我不确定为什么会这样,因为我把它按逻辑顺序排列.如果有人能帮助我,那就太好了.

编辑:

有没有人知道另一种选择,所以我可以使用"延迟"的那种效果?

Hov*_*els 6

不要在Swing事件线程中调用Thread.sleep(...),因为这会使事件线程本身进入休眠状态.由于此线程负责所有Swing绘制和用户交互,这将使您的应用程序进入休眠状态.

如果您只想延迟显示,请考虑使用Swing Timer.

另一方面,如果您的事件线程被长时间运行的任务破坏,那么使用SwingWorker(如Guillaume 1+对他的建议)在后台执行任务.