1

我正在尝试使用 java 中的 GUI 制作基于文本的游戏,我需要使用 SwingWorker。但是我不理解任何教程,这对我来说没有意义:(。

public void write(String msg){
    int i=0;
    while(true){
        try {
            Thread.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        console.setText(console.getText()+ msg.charAt(i));
        if(i==msg.length()){
            console.setText(console.getText()+ newline);
            break;
        }
    }
}

本质上,我要做的是将一个字符串传递给一个方法并逐个字符地打印出来,但是我不能,因为 sleep() 会中断 EDT 并将 GUI 锁定为 msg.length()*400ms :(。

如果有人有使用 SwingWorker 的代码解决方案,我将不胜感激 :)

4

1 回答 1

1

您可以简单地尝试一下,以了解如何将 swingworker 与一些字符串一起使用:

public void runInBackgroud(final String msg)
{
    SwingWorker<Object, Object> task = new SwingWorker<Object, Object> ( )
    {
        public Object doInBackground()
        {
            write(msg);
            return null;
        }
        public void done()
        {}
    };
    task.execute ( );
}

只需调用此方法runInBackgroud(msg);

于 2012-12-24T11:03:44.383 回答