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