How to use ScrollPanel with relative size

前端 未结 3 1486
别那么骄傲
别那么骄傲 2021-01-17 02:55

I\'m trying to use a ScrollPanel of GWT in a page. Since most of the contents are in the ScrollPanel, I want it to take an as-large-as-possible part of the page and resize a

3条回答
  •  悲&欢浪女
    2021-01-17 03:25

    First, ScrollPanel is something not acting as other widget for reason I don't know why. Cannot set relative size (50%), and if I give it some style, it's lost somewhere and cannot be found from page.

    My solution is to use a ResizeLayoutPanel. Andrei suggested using something ProvidesResize but requires the provide / require resize chain remain unbroken, which can be very tricky. I found this ResizeLayoutPanel "ProvidesResize to its one child, but does not RequiresResize", which is the perfect candidate for the root panel of my composite. Then, I just extend the ScrollPanel to resize itself in the "onResize" method whenever it's called by the parent ResizeLayoutPanel.

    Still no answer to my first question: by ScrollPanel behave like this in the first place? I tried to find answer in its source code but was not successful (though I didn't spend enough time studying the source code).

    public class My100PctScrollPanel extends ScrollPanel {
        @Override
        public void onResize() {
            // Window.alert("on resize"); 
            this.setWidth(this.getParent().getOffsetWidth()+"px");
            this.setHeight(this.getParent().getOffsetHeight()+"px");
            super.onResize();
        }
    }
    
    ........
    
    compositeRoot = new ResizeLayoutPanel();  
    
    ........
    scrollPanel = new My100PctScrollPanel();
    compositeRoot.clear();
    compositeRoot.add(scrollPanel);
    

提交回复
热议问题