JTextArea se desplaza hacia abajo solo si se agrega texto

Estoy tratando de crear unJTextArea que se desplaza hacia abajo cada vez que se agrega un texto a esa área de texto. De lo contrario, el usuario debería poder desplazarse hacia arriba y ver el mensaje anterior. Usé este código:

JTextArea terminalText  = new JTextArea();
JPanel terminal = new JPanel();
terminal.setLayout(new BorderLayout()); 
add(terminal);  //Adds the terminal to mother JPanel

//I added scrollbar to my JTextArea
JScrollPane scroll = new JScrollPane(terminalText);  
terminal.add(scroll, BorderLayout.CENTER);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

scroll.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {  
public void adjustmentValueChanged(AdjustmentEvent e) {  
 e.getAdjustable().setValue(e.getAdjustable().getMaximum());  
}});

Hasta ahora, este código parece hacer que mi área de texto se desplace hacia la parte inferior delterminalText área de texto cada vez que agrego algo aterminalText utilizandoterminalText.append.

Sin embargo, el usuario no puede usar la barra de desplazamiento para desplazarse hacia la parte superior y ver el mensaje anterior. ¿Hay alguna manera de arreglar esto? Debería estar usandoDocumentListener ¿lograr esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta