2013-07-22 2 views
0

У меня есть настройка пользовательского интерфейса, где у меня есть TabLayoutPanel, каждая вкладка соответствует панели, обернутой внутри ScrollPanel. В основном это чат-программа, в которой пользователи могут отправлять сообщения, которые появятся в панелях; это означает, что сообщения могут отображаться в вкладках, которые в настоящее время не сфокусированы.GWT - ScrollPanel в TabLayoutPanel не работает должным образом, если не выбрано

Теперь, что я хотел сделать (упрощенное здесь), должен прокручиваться снизу всякий раз, когда приходит сообщение, в основном для того, чтобы всегда находить самое новое сообщение. Это хорошо работает на выбранной вкладке, но на вкладках нет проблем.

В основном, когда количество сообщений на вкладке становится достаточно, чтобы полоса прокрутки была необходима, она, похоже, не регистрируется до тех пор, пока не будет выбрана вкладка. Я могу позвонить getVerticalScrollPosition(), и он вернет 0, хотя я знаю, что там больше, чем было бы; и если я переключусь на вкладку, полоса прокрутки будет располагаться вверху. Если в этот момент я снова выключусь, это сработает с этой точки, поэтому проблема заключается в том, что это происходит, когда не отображается полоса прокрутки, чтобы показать ее, которая, похоже, не регистрируется до тех пор, пока не будет выбрана вкладка.

Есть ли у кого-нибудь предложение обойти это поведение? Я пробовал просто устанавливать полосы прокрутки для отображения всегда, но это совсем не помогло.

ответ

0

Не 100% уверен, но я думаю, проблема в том, что display:none вкладке скрытом может быть причиной, почему getVerticalScrollPosition() возвращает 0.
В качестве временного решения можно добавить SelectionHandler и называющие getVerticalScrollPosition() в этом методе при переключении на с ScrollPanel

Смежные вопросы