A vue de nez comme ça, je regarderais combien de lignes sont présentes dans le JTextArea (je ne connais pas cette objet mais ce doit être possible d'une manière ou d'une autre j'imagine) à chaque frappe d'une lettre dans le JTextArea (ou mieux si y a possibilité à chaque nouvelle ligne dans le JtextArea, je ne sais pas s'il est capable de gérer ce type d'évènement) et si nbLigne>hauteurJTextArea et que nbLigne vient de passer à nbLigne+1, tu envoies un évènement à ton JScrollBar lui disant de descendre au maxi.
Bon ça c'est le raisonnement, pour le code en lui-même, si tu l'as déjà fait sur un autre container, tu devrais savoir transposer facilement