Я использую gwt-dnd для реализации функции перетаскивания в моей программе GWT. Чтобы прокрутка работала правильно, мне нужно
<ScrollPanel>
<AbsolutePanel>
<VerticalPanel>
<!-- lots of draggable widgets -->
</VerticalPanel>
</AbsolutePanel>
</ScrollPanel>
Мне нужно вручную установить размер AbsolutePanel, чтобы он был достаточно большим, чтобы содержать VerticalPanel. Однако, когда я добавляю виджеты в VerticalPanel, размер, сообщаемый VerticalPanel.getOffsetHeight (), не обновляется сразу - я думаю, он должен быть сначала обработан браузером. Поэтому я не могу сразу обновить размер AbsolutePanel, и он оказывается слишком маленьким. Ага!
Мое временное решение - установить таймер для изменения размера панели через 500 мс. К тому времени getOffsetHeight обычно будет возвращать обновленные значения. Есть ли способ сразу просмотреть изменение размера или что-то в этом роде? Или, в качестве альтернативы, могу я немедленно вызвать цикл рендеринга, чтобы я мог получить новый размер, не устанавливая таймер, который обязательно будет подвержен ошибкам?