ОК, поэтому самым простым подходом было расширение JTextPane. Расширенный класс создал и управлял базовым списком. При изменении формата (например, новых цветов) список полностью переформатирует данные. Единственная реальная проблема заключалась в том, что автопрокрутка не на 100% надежна. Оба:
Container parent = getParent();
// get the parent until scroll pane is found
while (parent != null && !(parent instanceof JScrollPane)) {
parent = parent.getParent();
}
if (parent != null) {
JScrollPane scrollPane = (JScrollPane)parent;
scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getMaximum());
}
и
scrollRectToVisible(new Rectangle(0, getHeight() - 2, 1, 1));
Предоставление противоречивых результатов с текстовой панелью, иногда с прокруткой не полностью.