Я попробовал большинство предложений, но столкнулся с проблемами, когда содержимое JTextArea становится большим (несколько МБ). Наконец, следующие показали лучшую производительность:
myTextArea.append( someText );
myTextArea.getCaret().setDot( Integer.MAX_VALUE );
Конечно, любой выбор, сделанный пользователем, теряется. Следовательно, его можно использовать только для использования только для отображения текстовой области.
Тем не менее, в моей установке, если содержимое JTextArea превышает около 9 МБ, оно становится непригодным для использования (от очень медленного до почти замороженного GUI).
Подобное явление возникает, когда текст содержит символы, которые представлены двумя символами (двумя 16-битными единицами) в кодировке UTF-16 (так называемые суррогатные пары, например: ?). У меня есть решение для фильтрации, но, возможно, другая тема.