Ограничить использование памяти JTextPane - PullRequest
7 голосов
/ 05 января 2010

У меня есть приложение, которое непрерывно получает данные в сокет, а затем записывает эти данные в файл, одновременно отображая эти данные в JTextPane. Естественно, когда данные записываются в базовый документ JTextPane, использование памяти продолжает увеличиваться.

Есть ли простой способ ограничения памяти, который разрешено использовать JTextPane? Мне бы хотелось, чтобы JTextPane работал аналогично тому, как работает история команд типичной командной оболочки.

Ответы [ 2 ]

7 голосов
/ 05 января 2010

просто проверьте содержимое и вытрите его в соответствии с максимальным размером буфера .., так как это 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, который намного светлее.

0 голосов
/ 05 января 2010

Нет, вы должны считать символы при добавлении текста и удалять некоторые, когда считаете, что их слишком много.

Обратите внимание, что под JTextPane есть DocumentModel, которая может дать вам доступ к количеству символов, а также сделать удаление немного более удобным.

...