1 java swing multithreading event-dispatch-thread
可能重复:
java中的GUI线程
我一直在尝试创建一个基于文本的游戏,它到目前为止,除了使用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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是带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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当它到达此代码时,程序等待msg.length*500ms然后立即打印整个msg!救命!
这是通常的问题:你不应该阻止"事件调度线"(EDT).
EDT负责绘制组件和调度事件.因此,当您阻止此线程时,在您离开方法并将控制权交还给EDT后,下一次重绘将会发生.
你必须在EDT之外做你的"动画".
查看此网站,Google或任何使用这些关键字的Swing教程,您将获得大量信息.
归档时间: |
|
查看次数: |
124 次 |
最近记录: |