У меня есть приложение, которое непрерывно получает данные по сокету и затем регистрирует эти данные в файл, также отображая эти данные в JTextPane. Естественно, поскольку данные записаны в базовый документ JTextPane, который использование памяти продолжает увеличивать.
Существует ли простой способ ограничить память, которая JTextPane разрешают использование? Я хотел бы, чтобы JTextPane работал подобный тому, как работает история команд типичного командного процессора.
просто проверьте содержимое и сотрите его соответственно максимальному размеру буфера. . так как это 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
, который намного длиннее.
Нет, вы должны считать символы при добавлении текста, и удалять некоторые из них, когда вам кажется, что их слишком много.
Обратите внимание, что под JTextPane находится DocumentModel, которая может дать вам доступ к количеству символов, а также сделать удаление немного более удобным.
.