2016-07-22 2 views
0

次のPRINT()メソッドが実行されるたびに、JTextAreaのテキストを変更しようとしています。プログラム全体が長いので少しだけ投稿できますが、基本的に[50] [50]文字配列には50行の50文字列に変換されています。このJTextAreaを保持するJFrameは、ボタンが押されると開始され、char配列をJTextAreaに直ちに出力します(char配列が決して更新されないようにした場合)。プログラムはこのテキストを数秒ごとに更新することを意図しています。JTextAreaのテキストを変更する

1秒ごとに更新する代わりに、JFrameは、PRINT()が最後に実行されるまで、基本的に空白のボックスとして表示されます。現在、output.outputLinesが追加された番号で更新された後、PRINT()を10回呼び出すことにより、1行10行を別々の行に出力することを意図しています。代わりに、最後の番号がロードされるまで空白のフレームしか表示されず、すべてのものが印刷されます。

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

関連する問題