1

可能重复:
java中的GUI线程

我一直在尝试制作一个基于文本的游戏,到目前为止,除了使用 Thread.sleep() 和 wait() 时出现这个奇怪的错误外每一个之间。

这是带有 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!帮助!

4

1 回答 1

6

这是常见的问题:您不应阻止“事件调度线程”(EDT)。

EDT 负责绘制组件和调度事件。因此,当您阻止此线程时,下一次重绘将在您离开方法并将控制权交还给 EDT 后发生。

你必须在 EDT 之外做你的“动画”。

使用这些关键字查找此站点、Google 或任何 Swing 教程,您将获得大量信息。

于 2012-12-15T21:43:46.743 回答