2012-01-09 4 views
0

現在、文字列バッファを使用して実行時に文字列を書き出すメソッドがあります。メソッドは次にこの文字列を返し、それをJTextAreaに表示します。私はこれを行うことができる別の方法は、メソッドが実行されると、文字列が終了してからテキスト領域に書き込まれるようになります。ありがとう。JTextAreaへのメソッドの書き出し

答えて

2

javax.swing.text.Documentパラメータを文字列バッファに書き込むメソッドに追加できます。メソッドを呼び出すと、JTextArea.getDocument()の値が渡されます。このオブジェクトは、JTextAreaのテキストを表します。その後

あなたもこのようなDocumentに追加し、文字列バッファにテキストを追加するたびに:これは、既存の文字列バッファの冗長化を行う可能性があることを

document.insertString(document.getLength(), stringToAppend, null); 

注...効果的に使用しています代わりに文字列バッファーとしてDocumentオブジェクト。また、このテクニックは、文字列バッファを表示する前に完全に書き込むよりもずっと遅くなることに注意してください。

+0

ありがとう、それは素晴らしい作品です。私が教えてくれたことは、GUIを管理するためにイベントディスパッチャスレッドを使うべきだということです。それはそれに反しているのですか?そうであれば、それを遵守させるために私がこれを変更できる方法はありますか? – John

+0

イベントディスパッチスレッドであることが判明しました。アクションイベントエリア外で実行されていると考えている理由はわかりません。 – John

+1

一般的に、このような長時間実行されるタスクは、実行中にUIがロックアップされないように、別のスレッド上に置くようにしてください。しかし、私が理解しているように、多くのSwingメソッドはイベントディスパッチスレッドに自動的にデリゲートします...もしそうなら、おそらく何も変更する必要はありません。しかし、UIがロックアップしている場合は、 'Document'の代わりに' SwingWorker'を使うことを検討してください - http://docs.oracle.com/javase/tutorial/uiswing/concurrency/interim.htmlを参照してください。 – gutch

関連する問題