Ограничьте использование памяти JTextPane

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

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

7
задан tjansson 5 January 2010 в 14:29
поделиться

2 ответа

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

Btw если вы не используете богатые возможности редактора JTextPane, я предлагаю вам использовать JTextArea, который намного длиннее.

.
7
ответ дан 7 December 2019 в 07:46
поделиться

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

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

.
0
ответ дан 7 December 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: