Преимущество: Могут быть созданы универсальные Типы данных.
Недостаток: Код, Чрезмерно увеличивающийся в размерах
При использовании JDK1.4.2 (или более ранней версии) наиболее частым предложением, которое вы найдете на форумах, является использование следующего кода:
textArea.append(...);
textArea.setCaretPosition(textArea.getDocument().getLength());
Однако я только что заметил, что в JDK5 это проблема действительно была решена путем изменения API. Теперь вы можете контролировать это поведение, установив свойство в DefaultCaret текстовой области. При использовании этого подхода код будет выглядеть следующим образом:
JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
Вышеупомянутое предложение по установке политики обновления курсора не работает.
Вместо этого вы можете попробовать Smart Scrolling , который дает пользователю возможность определять, должна ли прокрутка быть автоматической или нет.
Более подробное описание автоматической прокрутки в текстовой области можно найти можно найти здесь: Прокрутка текстовой области
JScrollBar vbar = scrollPane.getVerticalScrollBar();
for (int i = 0; i < 20; i++) {
myJTxt.append("This is text " + i + "\n");
vbar.setValue(vbar.getMaximum());
vbar.paint(vbar.getGraphics());
myJTxt.scrollRectToVisible(myJTxt.getVisibleRect());
myJTxt.paint(myJTxt.getGraphics());
try {
Thread.sleep(250);
} catch (InterruptedException ex) {
Logger.getLogger(ScrollTextView.class.getName()).log(Level.SEVERE, null, ex);
}
}