我正在尝试用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);