2013-03-16 49 views
1

我想知道是否有可能获得在GWT一个GWT ScrollPanel让孩子们的最大尺寸不滚动

com.google.gwt.user.client.ui.ScrollPanel 

对象的内部尺寸?我想创建一个ScrollPanel的孩子,它完全符合空的空间,而不用激活滚动条。

public void onModuleLoad() { 

    Window.setMargin("0px"); 

    TabLayoutPanel tabs = new TabLayoutPanel(30, Unit.PX); 

    //attach the tab panel to the body element 
    RootPanel.get(null).add(tabs); 

    //set the TabLayoutPanel to full size of the window. 
    String width = (Window.getClientWidth()) + "px"; 
    String height = (Window.getClientHeight()) + "px"; 
    tabs.setSize(width, height); 

    //create the scroll panel and activate the scroll bars 
    ScrollPanel scrollPanel = new ScrollPanel(new Button("a second button")); 
    scrollPanel.getElement().getStyle().setOverflowX(Overflow.SCROLL); 
    scrollPanel.getElement().getStyle().setOverflowY(Overflow.SCROLL); 

    //attach the scroll panel to the DOM 
    tabs.add(scrollPanel, "tab1"); 

    System.out.println(scrollPanel.getOffsetWidth());  // --> 0 
    System.out.println(scrollPanel.getOffsetHeight());  // --> 0 

} 

[结束更新]

原因[@Abhijith纳加拉贾的答案之后开始更新]:我想初始化一个动态可视化(这需要滚动条 的ScrollPanel如下初始化在稍后的时间点),这样看起来不错,并且避免在稍后添加ScrollPanel。

+0

首先是滚动面板是从简单的面板上,所以只有一个孩子可以添加,旁边填补空白需要增加儿童的体形准确地滚动面板尺寸。希望这是你正在寻找的,如果不是,请更多地解释它.. – Dipak 2013-03-16 04:49:27

回答

0

ScrollPanel sp = new ScrollPanel();

...

int innerWidth = sp.getOffsetWidth()- sp.getElement().getScrollWidth();

...

注:您可以使用上面的代码只有当你的scrollPanell是附在屏幕上。换句话说,它应该被渲染。

+0

感谢您的回答。我尝试了解决方案,但getOffsetWidth()和getOffsetHeight()始终为0。滚动面板连接到dom。请在上面找到我的更新。 – Michael 2013-03-17 00:41:18

+0

附加到DOM没有帮助...它应该呈现在屏幕上......一旦它应该呈现,那么只有你可以调整它的宽度。 – 2013-03-17 05:13:53

+0

有没有办法强制渲染过程或检查元素是否被渲染? – Michael 2013-03-17 05:38:39

0
DOM.setStyleAttribute(scrollpanel.getElement(), "maxHeight", mMainHeight + "px");;