我有一个扩展ResizeComposite
并以DockLayoutPanel
为根的复合词。我可以直接将其粘贴到RootLayoutPanel
中,因为DockLayoutPanel
ProvidesResize
可以使用。
但是,我想在GWT 2.2中使用MVP工具,RootLayoutPanel
无法传递给ActivityManager#setDiplay(AcceptsOneWidget)
(因为它是一个多小部件容器)。
乍一看,ScrollPanel
似乎符合实施AcceptsOneWidget
以及ProvidesResize
和RequiresResize
的双重要求。
但我发现当我将我的小部件放入ScrollPanel
时,它的“零大小”,我必须手动调整大小才能看到它,而且我很难知道给它的大小。我宁愿一个不一定滚动的小组。
答案 0 :(得分:3)
GWT 2.3中将有SimpleLayoutPanel,描述为:
A simple panel that {@link ProvidesResize} to its one child.
答案 1 :(得分:2)
您可以通过自己实现来为任何小部件添加ProvidesResize
,这相对简单 - 您只需将所有调整大小通知传递给RequiresResize
的每个子子。
或者,如果您只是希望面板占用所有可用空间,可以尝试将ScrollPanel
上的宽度和高度设置为"100%"
。
最后,这是我对AcceptsOneWidget
:
public class PanelForView extends LayoutPanel implements AcceptsOneWidget
{
IsWidget myWidget = null;
@Override
public void setWidget(IsWidget w)
{
if (myWidget != w)
{
if (myWidget != null)
{
remove(myWidget);
}
if (w != null)
{
add(w);
}
myWidget = w;
}
}
}
我已经在我的商业应用程序中使用它几个月没有任何问题,并且可以轻松地将视图交换进去。您可以自己使用此代码。