7

ソケットでデータを継続的に受信し、このデータを JTextPane に表示しながら、このデータをファイルに記録するアプリケーションがあります。当然のことながら、データが JTextPane の基になるドキュメントに書き込まれると、メモリ使用量は増加し続けます。

JTextPane が使用できるメモリを制限する簡単な方法はありますか? JTextPane が、典型的なコマンド シェルのコマンド ヒストリと同じように機能することを望みます。

4

2 に答える 2

7

コンテンツを確認し、それに応じて最大バッファ サイズにワイプするだけです。これはJTextPane、textpane で使用されるドキュメント クラスで作業するためです。

void clampBuffer(int incomingDataSize)
{
   Document doc = textPane.getStyledDocument();
   int overLength = doc.getLength() + incomingDataSize - BUFFER_SIZE;

   if (overLength > 0)
   {
      doc.remove(0, over_length);
   }
}

これは私が書いたスニペットにすぎません。個人的には確認していません。アイデアを提供するためだけのものです。もちろん、textPane にテキストを追加する前に実行する必要があります。

ところで、 の豊富なエディタ機能を使用していない場合は、より軽量JTextPaneな を使用することをお勧めしますJTextArea

于 2010-01-05T14:35:16.760 に答える
0

いいえ、テキストを追加するときに文字を数え、多すぎると思われる場合は削除する必要があります。

JTextPane の下に DocumentModel があることに注意してください。これにより、文字数にアクセスしたり、削除を少し便利にしたりすることができます。

于 2010-01-05T14:36:04.330 に答える