可能重复:
GUI threading in java
我一直在尝试制作一个基于文本的游戏,它到目前为止,除了使用Thread.sleep()和wait()时这个奇怪的错误 此代码应该通过char将消息char打印到名为console的JTextArea,并在每个之间延迟。
以下是wait()
的代码int i=0;
synchronized(mon) {
while(i<msg.length())
{
console.setText(console.getText()+ msg.charAt(i));
i++;
try {
mon.wait(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这是带sleep()的代码:
int i=0;
while(i<msg.length())
{
console.setText(console.getText()+ msg.charAt(i));
i++;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
然而,当它到达此代码时,程序等待msg.length * 500ms然后立即打印整个msg!救命啊!
答案 0 :(得分:6)
这是通常的问题:你不应该阻止&#34;事件调度线程&#34; (EDT)。
EDT负责绘制组件和调度事件。因此,当您阻止此线程时,在您离开方法并将控制权交还给EDT后,下一次重绘将会发生。
你必须做你的动画&#34;在美国东部时间之外。
使用这些关键字查找此网站,Google或任何Swing教程,您将获得大量信息。