嘗試設置光標位置之後加入此:
textAreaToScroll.getElement().setScrollTop(textAreaToScroll.getElement().getScrollHeight());
這將在元件滾動到底部。
編輯:
要滾動至任何光標位置存在(據我所知)沒有簡單的方法來做到這一點。我不認爲有什麼辦法可以問光標所在的瀏覽器。 我剛剛想到了一些可能有用的事情(還沒有真正測試過)來猜測滾動需要多長時間的粗略估計。
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);
這可以滾動大致所需的距離。請注意,這假定每行都被填充大約相同的數量,因爲它使用光標位置除以文本的長度而不是行數(這很難計算)。手動換行會扭曲這一估計,而比例字體也會使其不太準確。
您可能需要調整比率,以使其滾動得太短而不是太遠,因爲如果光標稍微低於文本區域的頂部,光標仍然可見。正如我所說我沒有真正測試過這一點,我可能已經顛倒了邏輯和其他微妙的錯誤。
此代碼將TextArea滾動到底部,不幸的是不會移動到光標位置:-( – Witek 2010-03-11 11:11:39
如果將光標設置到最後,它不會在底部? – 2010-03-12 10:53:35
我需要一個解決方案,其中TextArea滾動到光標的位置,而不是結束。示例:TextArea有5行高度。其文字內容爲50行。光標位於第25行。我想要一個方法scrollToCursorPosition(),它可以滾動到第25行,而不是第50行。 – Witek 2010-03-19 09:28:45