SwingWorker problems



我正在尝试用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的代码解决方案,我会很感激:)

您可以简单地尝试一下如何使用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);

相关内容

  • 没有找到相关文章

最新更新