限制JTextPane内存使用量

时间:2010-01-05 14:29:37

标签: java memory-management jtextpane

我有一个应用程序,它不断地在套接字上接收数据,然后将这些数据记录到文件中,同时在JTextPane中显示这些数据。当然,随着数据被写入JTextPane的底层文档,内存使用量将继续增加。

是否有一种简单的方法来限制允许使用JTextPane的内存?我希望JTextPane的工作方式类似于典型命令shell的命令历史记录的工作方式。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

不,你必须在添加文字时计算字符,并在你认为太多时删除一些字符。

请注意,JTextPane下面有一个DocumentModel,它可以让您访问字符数,也可以使删除更容易。