#java #java-me #lwuit #autoscroll #lwuit-textarea
#java #java-me #lwuit #автопрокрутка #lwuit-текстовая область
Вопрос:
У меня есть TextArea
в LWUIT, с которым у меня возникла проблема. У меня есть следующие две проблемы:
-
Несмотря на то, что я вызываю
setIsScrollVisible(true)
, у меня, похоже, нет полосы прокрутки, и я не могу прокручивать, когда вывод идет ниже видимой области контейнера. -
Как мне указать
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)
. Это сработало для меня.