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