【发布时间】:2012-12-24 10:43:32
【问题描述】:
我正在尝试使用 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? Swingworkers 旨在与 Swing 一起使用...
-
基于文本的游戏仍然有一个 GUI
-
while(true){是无限循环,我在那里看到break;,但最好将true更改为局部变量,以获得更好的帮助,尽快发布SSCCE,简短,可运行,可编译,大约在上午问题,JFrame、JTextArea和SwingWorker的值来自Random,在这个论坛上的代码(以 SSCCE 形式)大约 35 - 50 行关于同一问题 -
您在使用上述代码时遇到了什么问题?从
SwingWorker的doInBackground()调用这个方法你发现了什么问题 -
问题是我不知道如何使用 swingworker 执行此操作。如果没有 swingworker,它只会将 gui 锁定为 msg.length()*400ms
标签: java multithreading user-interface try-catch event-dispatch-thread