JTextPane редактор больших файлов и производительности - PullRequest
0 голосов
/ 31 августа 2010

Я использую JTextPane для редактирования файлов XML.Анализатор jflex разбивает xml-файл на токены и использует пользовательский документ (расширяет DefaultStyledDocument). Синтаксис цвета:

doc.setCharacterAttributes (token.getCharBegin () + change, token.getCharEnd () - token.getCharBegin (), Token_Styles_Define.getStyle (token.getDescription ()), true);

Моя проблема состоит в том, чтобы загрузить и отредактировать большой xml-файл, например, xml-файл размером 400 КБ занимает 30 секунд, а для 1 МБ объемом 700 КБ я получаю пространство кучи Java.,Я нашел его в Google и обнаружил:

"Определите предел, который JTextPane / JEditorPane может хорошо обрабатывать (например, 500 КБ или 1 МБ). Вам нужно только загрузить кусок файла в элемент управления с этим размером.Начните с загрузки 1-го раздела файла, затем вам нужно взаимодействовать с контейнером прокрутки и посмотреть, достиг ли он конца / начала текущего фрагмента файла. Если это так, покажите хороший курсор ожидания и загрузите предыдущий /следующий блок в память и в текстовый элемент управления. Блок загрузки рассчитывается исходя из вашей текущей позиции курсора в файле (смещение). Блок загрузки = смещение - предел / от 2 до смещения + предел / 2 Текст в JTextPane / JEditorPane не долженизменить при загрузке чанков, иначе пользователь чувствует, что он находится в другой позиции файла. Это не тривиальное решение, но если вы не найдете какой-либо другой сторонний элемент управления для этого, я бы пошел по этому пути. "(bruno conde)

Это хорошее решение, и кто-нибудь может дать мне пример (ссылка на учебный проект)?или есть другое решение?Как мы можем улучшить производительность jtextpane?Thx

1 Ответ

0 голосов
/ 01 сентября 2010

Мегабайт текста в JTextPane не должен быть проблемой.На моем рабочем столе добавление строки размером 1 МБ с помощью setText () занимает ~ 1,6 секунды, но после загрузки заметное отставание отсутствует.

Попробуйте отключить подсветку синтаксиса.Это наиболее вероятный источник задержки.

...