2017-12-03 26 views
0

私は現在、マウスクリックでJtextAreaを更新するいくつかのメソッドを実行するアプリケーションを作成しています。問題は、各メソッド呼び出しでテキスト領域を更新しても、マウスクリックがすべて実行されるまで実際には更新されません。JtextAreaアップデートの問題がリアルタイムで更新されない

これはすべてを実行するにはかなり時間がかかることがあります代わりに、すべてが

public void mouseClicked(MouseEvent e) { 
       DataCollector dc = new DataCollector(); 

       dataCollected.append("Begining Test...\n\n"); 
       dataCollected.append("Collecting System Information... \n\n"); 
       dataCollected.append(dc.getSystem()); 
           ... lots more like this... 

} 

答えて

0

マウスクリックですべてが実行されるまで、それは実際には更新されませんが完了するまで待機しているの各呼び出しでテキストエリアの更新を確認してください。

これはまったく正しいです。あなたのmouseClickedメソッドはGUIスレッドで呼び出され、このスレッドはGUIを更新する唯一のスレッドです。したがって、のmouseClickedメソッドが終了した後で、 "更新テキストエリアコンテンツ"アクションが実行されます。したがって、GUIスレッド上で実行されるメソッドは非常に高速に実行する必要があるため、GUIスレッド上で実行したい他のメソッドもそうすることができます。

JTextAreaを更新する通常のコードと並行して実行される新しいスレッドを開始することができます。スイングでのスレッドの操作方法(および「イベントディスパッチスレッド」の内容)については、Lesson: Concurrency in Swingをお読みください。