Когда подходящее время для вызова UIObject.getOffsetWidth?
Я хочу получить смещение Uiobject в GWT. но это значение зависит от:
- где этот объект прикреплен или нет?
- где относительный css загружен или нет?
- Размер объекта может быть изменен в обратном вызове onload.
- ...
Итак, все усложняется, особенно когда вы хотите получить это значение FlowPanel,Label,InlineLabel и т. д., размер которого рассчитывается динамически.
мой вопрос: когда или как правильно получить смещение?
1 ответ
Вы можете получить правильный размер только после полной визуализации страницы. В противном случае вы получите нулевые значения. Как правило, есть два варианта использования:
(A) Скажите браузеру, чтобы вы сделали ваш вид. Затем с помощью планировщика убедитесь, что браузер завершил рендеринг, прежде чем проверять размеры:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
int width = myPanel.getOffsetWidth();
// do something with this width
]
]
(B) Присоедините обработчик изменения размера к окну. Если пользователь изменяет размер окна браузера, вся ширина и высота могут измениться. Вам не нужно использовать планировщик в ResizeHandler - браузер завершит повторную визуализацию страницы перед вызовом ResizeHandler.