3

我有一个复合材料,它扩展ResizeComposite并以 aDockLayoutPanel作为其根。我可以将它直接插入RootLayoutPanel它并且它可以工作,因为DockLayoutPanel ProvidesResize.

但是,我想使用 GWT 2.2 中的 MVP 设施,并且RootLayoutPanel不能传递给ActivityManager#setDiplay(AcceptsOneWidget)(因为它是一个多小部件容器)。

乍一看,ScrollPanel似乎满足了实现AcceptsOneWidgetand both ProvidesResizeand的双重要求RequiresResize

但是我发现当我将我的小部件放入 aScrollPanel时,它的大小为零,我必须手动调整它的大小才能看到它,而且我不知道该给它什么大小。我宁愿一个不一定滚动的面板。

4

2 回答 2

3

GWT 2.3 中会有一个SimpleLayoutPanel,描述为:

A simple panel that {@link ProvidesResize} to its one child.

于 2011-03-01T22:55:04.017 回答
2

您可以通过自己实现它来添加ProvidesResize到任何小部件,这相对简单 - 您只需将获得的所有调整大小通知传递给RequiresResize.

或者,如果您只想让面板占用所有可用空间,您可以尝试将宽度和高度设置ScrollPanel"100%".

最后,这是我对 LayoutPanel 的实现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;
        }
    }

}

几个月来,我一直在我的商业应用程序中使用它,没有任何问题,而且很容易在其中交换视图。随意使用此代码。

于 2011-02-28T14:38:33.677 回答