每当运行以下PRINT()方法时,我都会尝试更改JTextArea中的文本。整个程序很长,所以我只能发布一点,但基本上[50] [50] char数组包含50行50个字符的字符串。按下按钮时会启动持有此JTextArea的JFrame,并立即将char数组打印到JTextArea中(当我创建它时,char数组永远不会更新)。该计划旨在每隔几秒更新一次该文本。
但是,不是每秒更新一次,JFrame基本上都是一个空白框,直到最后一次运行PRINT()。目前,它意味着通过10次调用PRINT()在单独的行中打印1 ... 10,每次调用output.outputLines后都添加了更新的数字。相反,它只显示一个空白帧,直到最后一个数字被加载,然后打印整个事物。PRINT()方法:
public boolean PRINT(){
String result = ""; //Used to hold the characters to be printed to the screen
for(int x = 0; x<50; x++){
for(int y = 0; y<50; y++) {
result = result + String.valueOf(output.outputLines[x][y]);
}//End of inner FOR statement
result = result + "\n";
output.jTextArea1.setText(result);
}//End of outer FOR statement
return true;
}
用于在PRINT()调用之间暂停的代码:
try {
java.lang.Thread.sleep(1000);
catch (Exception ex) {
System.out.println("Exception in Thread.sleep()");
有人可以帮我弄清楚出了什么问题吗?
答案 0 :(得分:2)
你在Swing事件线程上调用Thread.sleep(...)
,实际上是把它和你的GUI放在一起睡觉。解决方案(一如既往)不要这样做。如果您想暂停使用Swing Timer。如果您需要运行长时间运行的代码,请使用后台线程,例如SwingWorker。