更改JTextArea中的文本

时间:2016-07-22 00:25:59

标签: java arrays swing

每当运行以下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()");

有人可以帮我弄清楚出了什么问题吗?

1 个答案:

答案 0 :(得分:2)

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