问题
EDIT
I have fixed the whitespace behaviour by resizing components within the VerticalPanel
, that seem to have had an effect on the panel's dimension somehow missed by the console. I don't quite understand how.
However, I am still stuck with none of my panels showing vertical scroll bars.
In a GWT project, I have the following structure:
Page
DockLayoutPanel
North (header)
Center (body)
South (footer)
/DockLayoutPanel
Body
SplitLayoutPanel$1
West
SplitLayoutPanel$2
North
Center
TabPanel
ScrollPanel
VerticalPanel
-Several widgets-
/VerticalPanel
/ScrollPanel
/TabPanel
/Center
/SplitLayoutPanel$2
/West
Center
/SplitLayoutPanel$1
My problems are with the ScrollPanel
in the TabPanel
, which in itself contains a VerticalPanel
containing several widgets. This is true for each Tab
in the TabPanel
.
My problem is that, while the width's for all containers in SplitLayoutPanel$2
's center have 100% width, the ScrollPanel
contains a horizontal scrollbar with a considerable white area next to it's VerticalPanel
, while they are in absolute metrics the same size.
Illustrating the situation
This is the TabPanel
, with ScrollPanel
, and VerticalPanel
. Notice how the horizontal scrollbar exists, while the TabPanel
, ScrollPanel
and VerticalPanel
have the same width. Scrolling to the right yields a white area.
The ScrollPanel
and VerticalPanel
all sport an absolute width of 598px. The West component of the DockLayoutPanel
has a size of 600, so that matches. Also notice how bringing up the developer console has made the scrollbar disappear. In fact, the entire panel has disappeared behind it, and no vertical scrollbar pops up.
When scrolling the bar to the right, the VerticalPanel
gets partially placed off screen, and the ScrollPanel
shows this whitespace. Obviously, I don't want the whitespace to be there, so there won't be need for a scrollbar at all. All panels in this situation still have the same width: 598px. Resizing the SplitLayoutPanel
, using the border to the right, increases these values (obviously), but the panels do still share equal width and the whitespace remains the same size, while I'd expect it to get wider too.
The second tab contains a load of text, which continues off the screen, but no scrollbars appear.
Problem conclusion
- No vertical scrollbars
- A horizontal scrollbar with some magically summoned whitespace
- Compontents claim to have equal width
Any help is greatly appreciated.
EDIT
Have tried resizing the VerticalPanel
to 90 or 80% width. The whitespace seems unaffected and it shows that 100% really covers the visible width and not more.
回答1:
TabPanel
(at least the one from GWT proper) resizes from the inside-out: its size varies depending on the size of the selected tab. So your ScrollPanel
will never have a vertical scrollbar unless you explicitly give it a size, and your content is actually overflowing the layer of the SplitLayoutPanel
you put the TabPanel
in.
Layout panels, such as TabLayoutPanel
, on the other hand resize from the outside-in: the SplitLayoutPanel
would set the size of the TabLayoutPanel
in its center region, and the TabLayoutPanel
would in turn set the size of the ScrollPanel
, so if the content of the ScrollPanel
overflows, a vertical scrollbar appears.
回答2:
First Point : Don't mix and match layout panels and non - layout panels.
Second Point : If you want proper resizing and scrollbars, always try to mention width and height in percentages.
I see that you have mentioned width to be 100%
. But what about the height
?
What I suggest for you is,
Change TabPanel
to TabLayoutPanel
Set all the panels height throughout the heirarchy as 100%
来源:https://stackoverflow.com/questions/15200138/gwt-scrollpanel-in-tabpanel-no-vertical-scrollbar