В LWUIT, как программно установить «TextArea's Scroll» обратно наверх, после перемещения вниз? - PullRequest
1 голос
/ 02 января 2012

Используя 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 s Scrollbar опускается вниз до достижения конца String затем Button сфокусируется, оставляя TextArea Scrollbar в конце TextArea.

Я хочу, чтобы при нажатии Button полоса прокрутки возвращалась в исходное состояние в Top TextArea вместо того, чтобы находиться в Bottom TextArea. Как я мог это сделать?

1 Ответ

2 голосов
/ 02 января 2012

Вот решение для тех, кому интересно.
с помощью пользовательского 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. «Текст» должен быть окончательным или членом класса;)

...