7

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

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

4

2 回答 2

7

只需检查内容并将其相应地擦除到最大缓冲区大小..因为它是JTextPane您将在文本窗格使用的文档类上工作:

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 回答