Попробуйте добавить это после установки позиции курсора:
textAreaToScroll.getElement().setScrollTop(textAreaToScroll.getElement().getScrollHeight());
Это позволит прокрутить элемент вниз.
EDIT:
Для прокрутки до позиции любая не существует (насколько я знаю) простого способа сделать это. Я не думаю, что есть способ спросить браузер, в какой строке находится курсор.
Я только что понял, что может сработать (на самом деле не проверял), чтобы угадать приблизительную оценку продолжительности прокрутки.
int cursorPos = textAreaToScroll.getCursorPos();
long offsetRatio = cursorPos / textAreaToScroll.getText().length();
//gives 0.0 to 1.0
offsetRatio += someMagicNumber; // -0.1 maybe?
// Depending on the font you may need to adjust the magic number
// to adjust the ratio if it scrolls to far or to short.
offsetRatio = offsetRatio>0.0 ? offsetRatio : 0; //make sure
//we don't get negative ratios
//(negative values may crash some browsers while others ignore it)
textAreaToScroll.getElement().setScrollTop(
textAreaToScroll.getElement().getScrollHeight() * offsetRatio );
Это может прокрутить примерно желаемое расстояние. Обратите внимание, что предполагается, что каждая строка заполнена примерно на одну и ту же сумму, поскольку она использует позицию курсора, разделенную на длину текста, а не на количество строк (которые сложно вычислить). Ручные переводы строк искажают эту оценку, а пропорциональные шрифты также делают ее менее точной.
Вероятно, вам нужно будет настроить соотношение так, чтобы оно скользило слишком коротко, а не слишком далеко, поскольку курсор все еще будет виден, если он немного ниже верхней части текстовой области.
Как я сказал, я на самом деле не проверял это, возможно, я перевернул логику и другие тонкие ошибки.