Проблемы с прокруткой текстовой области в LWUIT

#java #java-me #lwuit #autoscroll #lwuit-textarea

#java #java-me #lwuit #автопрокрутка #lwuit-текстовая область

Вопрос:

У меня есть TextArea в LWUIT, с которым у меня возникла проблема. У меня есть следующие две проблемы:

  1. Несмотря на то, что я вызываю setIsScrollVisible(true) , у меня, похоже, нет полосы прокрутки, и я не могу прокручивать, когда вывод идет ниже видимой области контейнера.

  2. Как мне указать TextArea , чтобы автоматически прокручивать вниз программно?

Мой код для инициализации текстовой области выглядит следующим образом:

 myTextArea = new TextArea(20, Display.getInstance().getDisplayWidth());
myTextArea.setEditable(false);
myTextArea.setEnabled(true);
myTextArea.setIsScrollVisible(true);
myTextArea.setGrowByContent(false);
System.out.println(myTextArea.isScrollableY());
  

isScrollableY() возвращает true. Есть идеи? Есть ли что-то, чего мне не хватает? Похоже, в API нет ничего видимого, что позволяло бы мне явно включать или отключать прокрутку. Заранее спасибо за любую помощь в этом.

Комментарии:

1. Я протестировал ваш код, он работает нормально для меня. И почему вы проходите Display.getInstance().getDisplayWidth() ?

2. Я хочу, чтобы форма была такой же широкой, как экран. Если этот код нормально работает со стандартной JVM, то, возможно, есть проблема с проприетарной реализацией, с которой я работаю?

Ответ №1:

Ширина текстовой области указана в столбцах, а НЕ в пикселях, как у вас в коде.

Установка прокрутки на видимую не приведет к ее отображению, поскольку полосы прокрутки LWUIT всегда «по мере необходимости», что означает, что полоса прокрутки будет отображаться только при необходимости, установка этого значения в false просто скроет полосу прокрутки независимо от необходимости.

Чтобы текстовая область занимала всю ширину, просто поместите ее в контейнер / форму компоновки Y, и менеджер компоновки растянет ее по оси X.

Вы можете использовать scrollRectToVisible() для прокрутки текстовой области вниз или, в качестве альтернативы, вы можете получить текстовую область и использовать setScrollY(int) с соответствующим значением (см. Исходный код текстовой области для того, как это используется для прокрутки текстовой области.

Комментарии:

1. Я знаю, что это не по пикселям, однако я думал, что пытался использовать scrollRectToVisible(), и это не сработало. Я сделаю это еще раз и отчитаюсь, но в настоящее время я работаю над другими областями этого проекта, поэтому может пройти некоторое время, прежде чем я смогу это протестировать.

2. Оказывается, была проблема с первоначальным результатом нашего клиента, последнее обновление позволило методам, относящимся к прокрутке, работать должным образом.

Ответ №2:

Попробуйте простой textArea.setFocusable(false) . Это сработало для меня.