JTextArea que no se actualiza

Marcos
22 de Agosto del 2005
Estoy haciendo un chat en java y uso un JTextArea para mostrar los mensajes que envío y recibo. Este objeto JTextArea lo hago "cliente" de un JScrollPane para poder utilizar la barra de desplazamiento vertical que proporciona el mismo.
El problema es que cuando recibo o envio un mensaje, el texto se adiciona al JTextArea, pero la barra de desplazamiento no se corre para mostrar la última línea adicionada y esto es verdaderamente molesto. No se como hacer para que la mencionada barra se desplace a la altura de la última línea adicionada.
Espero que puedan ayudarme.

Jaime D?la
22 de Agosto del 2005
Hola...debería funcionarte en condiciones normales de manera automática:
* Recomendaciones *
1- Estas seguro que cuando se añade nuevo texto al final del objeto JTextArea lo haces con append().
2- Asegúrate de no incluir el objeto JTextArea al contenedor que utilizas para tus objetos (que puede ser un JPanel) ... únicamente deberías adicionar el obejto JScrollPane asociado al anterior.

Cualquier duda envíame un e-mail y te mando el código !!
Suerte.

bmc
22 de Agosto del 2005
Estoy iniciando en Java y ayer me pasaba lo mismo, prueba lo siguiente:
Nombre_del_JScrollPane.getVerticalScrollBar().addAdjustmentListener(
new AdjustmentListener() {
private int valor;
public void adjustmentValueChanged(AdjustmentEvent evt) {
if(valor!=Nombre_del_JScrollPane.getVerticalScrollBar().getMaximum())
Nombre_del_JScrollPane.getVerticalScrollBar().setValue(Nombre_del_JScrollPane.getVerticalScrollBar().getMaximum());
valor=Nombre_del_JScrollPane.getVerticalScrollBar().getMaximum();
}
}
);

Havel
22 de Agosto del 2005
Si metes el JTextArea en un contenedor, entonces el problema es que no lo actualizas.

La solución consiste en llamar al método update(Graphics g) del contenedor. Pasandole como parámetro el objeto gráfico del mismo, que creo que se obtiene mediante el método getGraphics()...

Mira en la API de JTextArea si este componente tiene un método update... y si es así... lo usas.

Saludos.