2011-04-14 43 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 
    }   
};