gpt4 book ai didi

gwt - 如何滚动 GWT TextArea?

转载 作者:行者123 更新时间:2023-12-05 00:07:03 24 4
gpt4 key购买 nike

我打电话com.google.gwt.user.client.ui.TextArea.setText(myText)来设置内容。之后我打电话setCursorPosition(myText.length())将光标移到最后。这很好用。

myText有更多的行然后文本区域可以一次显示,它显示一个滚动条。但它不会滚动到光标位置。更糟糕的是 - 它滚动到顶部。

如何将 GWT TextArea 滚动到光标位置?我真的需要光标位置,而不是 TextArea 的底部。 JSNI 解决方法也可以。

最佳答案

在设置光标位置后尝试添加:

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 );

这可能会滚动大致所需的距离。请注意,这假设每行的填充量大致相同,因为它使用光标位置除以文本长度而不是行数(很难计算)。手动换行会歪曲这个估计,比例字体也会使它不太准确。

您可能需要调整比例,使其滚动得稍微太短而不是太远,因为如果光标略低于文本区域的顶部,它仍然可见。

正如我所说,我还没有实际测试过这个,我可能已经颠倒了逻辑和其他微妙的错误。

关于gwt - 如何滚动 GWT TextArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com