2011-04-14 66 views
2

我有一個TabPanel其中包含一個SplitLayoutPanel與內部兩個ScrollPanel,一個在中心和一個在碼頭的南邊緣。當我調整瀏覽器窗口的大小時,我的SplitLayoutPanel不會自動調整大小。我嘗試用這個代碼來解決這個問題:GWT SplitLayoutPanel調整大小

 Window.addResizeHandler(new ResizeHandler() { 
      @Override 
      public void onResize(ResizeEvent event) { 
        setSplitPanelSize(); 
      } 
     }); 


protected void setSplitPanelSize() { 
    if (getParent() != null) { 
     Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { 
      @Override 
      public void execute() { 
       mainSplitPanel.setSize(getParent().getOffsetWidth() + "px", getParent().getOffsetHeight() + "px"); 
      } 
     }); 
    } 

} 

但使用getParent(),以便檢索TabPanel大小是一個不安全的soultion。是否有另一種方法來調整瀏覽器大小調整SplitLayoutPanel(及其元素)?

回答

3

SplitLayoutPanel實現了RequiresResize和ProvideResize,因爲它從DockLayoutPanel擴展。你可以重寫onResize()方法來做你想做的事。也可能需要在覆蓋中調用基礎onResize()方法。

4

Zasz是正確的。

SplitLayoutPanel mainPanel = new SplitLayoutPanel() { 
    @Override 
    public void onResize() { 
     super.onResize(); 
     //some other resizing stuff 
    }   
};