ソケットでデータを継続的に受信し、このデータを JTextPane に表示しながら、このデータをファイルに記録するアプリケーションがあります。当然のことながら、データが JTextPane の基になるドキュメントに書き込まれると、メモリ使用量は増加し続けます。
JTextPane が使用できるメモリを制限する簡単な方法はありますか? JTextPane が、典型的なコマンド シェルのコマンド ヒストリと同じように機能することを望みます。
ソケットでデータを継続的に受信し、このデータを JTextPane に表示しながら、このデータをファイルに記録するアプリケーションがあります。当然のことながら、データが JTextPane の基になるドキュメントに書き込まれると、メモリ使用量は増加し続けます。
JTextPane が使用できるメモリを制限する簡単な方法はありますか? JTextPane が、典型的なコマンド シェルのコマンド ヒストリと同じように機能することを望みます。
コンテンツを確認し、それに応じて最大バッファ サイズにワイプするだけです。これは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
。
いいえ、テキストを追加するときに文字を数え、多すぎると思われる場合は削除する必要があります。
JTextPane の下に DocumentModel があることに注意してください。これにより、文字数にアクセスしたり、削除を少し便利にしたりすることができます。