2013-01-14 37 views
1

我有問題與得到VLayout高度後,我給它添加SmartGWT的獲得VLayout高度後,添加成員

VLayot layout = new VLayout(); 

在演講我有代碼

display.getAnswerPanel().removeMembers(display.getAnswerPanel().getMembers()); 

其中明確所有成員的成員,我添加另一個(我有按鈕,當我舔他們,它清除所有VLayout並添加新成員)

layout.addMember(new Button("Example")); 

我需要得到這VLayoutoffsetHeight開始和每次我點擊按鈕,我的問題是,當我第一次加載頁面時,我的offsetHeigh是1px,每次下一次,當我點擊按鈕是好的,它顯示我正確的價值。有人能幫我嗎?

我試圖用這個代碼

scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { 
    layout.getOffsetHeight(); 
} 

但情況是一樣的,我第一次沒有正確的值。

+0

確保在嘗試評估其尺寸之前繪製了佈局。 – gpapaz

+0

如何確保佈局得到繪製? – Zaki

+1

確保在嘗試獲取其高度/寬度之前調用layout.show()。 – gpapaz

回答

0

只有在加載小部件或點擊按鈕後,我們才能獲得任何小部件的高度和寬度。

0

Scheduler#scheduleDeferred()在GWT循環結束時執行,因此佈局還沒有時間更新。我想除了使用傳統的定時器黑客外,沒有什麼可以做的(如果有讀者有疑問,是的,我的意思是使用setTimeout()或Scheduler.get()。scheduleWithFixedDelay(cmd,200))。

相關問題