2016-07-22 48 views
0

更改文本我想无论何时运行下面的print()方法来改变JTextArea中的文本。整个程序很长,所以我只能发布一点点,但基本上[50] [50]字符数组包含正在变成50行50个字符的字符串。包含这个JTextArea的JFrame是在按下按钮时启动的,并立即将char数组输出到JTextArea中(当我创建它时,char数组永远不会更新)。该计划旨在每隔几秒更新一次该文本。在JTextArea中

但是,不是每秒更新一次,直到上次运行PRINT()时,JFrame基本上都显示为空白框。目前,它打算通过对PRINT()的10次调用以单独的行打印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

我可以看到这个是问题的一个确切的重复? – user2465510

回答

2

你在Swing事件线程上调用Thread.sleep(...),实质上是让它和你的GUI进入睡眠状态。解决方案(一如既往)不要这样做。如果您想暂停使用Swing Timer。如果您需要运行长时间运行的代码,请使用后台线程,如SwingWorker

+0

谢谢我会试试这个,看看另一个问题。 – user2465510