在 LWUIT 中,如何以编程方式设置“TextArea”的滚动向下移动后回到顶部?

发布于 2024-12-23 16:19:42 字数 939 浏览 1 评论 0原文

使用 LWUIT,我有一个带有两个组件的 Form:一个只读的 TextArea 和一个 Button

TextArea text = new TextArea("blah blah blah blah blah blah blah blah blah ...");
text.setEditable(false);
form.addComponent(text);

Button button = new Button("Press Me !");
button.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
          // DESIRED CODE IS HERE ...
     }
});
form.addComponent(button);

TextArea有一个 Scrollbar,因为它包含一个很长的 String,当用户DOWN 时,TextArea滚动条向下移动直到到达末尾String 的,然后 Button 获得焦点,将 TextAreaScrollbar 留在 的末尾>文本区域

我希望,当单击 Button 时,滚动条返回到 TextAreaTop 中的原始状态> 而不是位于 TextAreaBottom 中。 我该怎么做?

Using LWUIT, I have a Form with two components: a read-only TextArea and a Button:

TextArea text = new TextArea("blah blah blah blah blah blah blah blah blah ...");
text.setEditable(false);
form.addComponent(text);

Button button = new Button("Press Me !");
button.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
          // DESIRED CODE IS HERE ...
     }
});
form.addComponent(button);

The TextArea has a Scrollbar because it contains a long String, when the user moves DOWN the TextArea's Scrollbar moves down until it reaches the end of the String, then the Button get focused leaving the TextArea's Scrollbar at the end of the TextArea.

I want that, when the Button is clicked, the scrollbar returns back to its original state in the Top of the TextArea instead of being in the Bottom of the TextArea. How could I do this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜味拾荒者 2024-12-30 16:19:42

这是为有兴趣的人提供的解决方案。
通过使用自定义 TextArea

public class CustomTextArea extends TextArea {
    public TextAreaScrollControlled(String text) {
        super(text);
    }

    public void resetScrollBackToTop() {
        setScrollY(0);
    }
}

那么代码如下(而不是问题中发布的代码):

CustomTextArea text = new CustomTextArea("blah blah blah blah blah blah ...");
text.setEditable(false);
addComponent(text);

Button button = new Button("Press Me !");
button.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
          text.resetScrollBackToTop(); // SOLUTION
     }
});
form.addComponent(button);

PS。 “文本”应该是最终的或该类的成员;)

Here's the solution for those who are interested.
by using a custom TextArea

public class CustomTextArea extends TextArea {
    public TextAreaScrollControlled(String text) {
        super(text);
    }

    public void resetScrollBackToTop() {
        setScrollY(0);
    }
}

Then the code is the following (instead of the one posted in the question):

CustomTextArea text = new CustomTextArea("blah blah blah blah blah blah ...");
text.setEditable(false);
addComponent(text);

Button button = new Button("Press Me !");
button.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
          text.resetScrollBackToTop(); // SOLUTION
     }
});
form.addComponent(button);

PS. "text" should be final or a member of the class ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文