首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更换GWT中DockLayoutPanel的中央面板?

如何更换GWT中DockLayoutPanel的中央面板?
EN

Stack Overflow用户
提问于 2011-10-06 17:46:11
回答 1查看 2.9K关注 0票数 3

我从一个EntryPoint类加载一个定制的构建westPanel。从这个WestPanel中,我想替换我的EntryPoint类中的DockLayoutPanel的中心。

下面是我的EntryPoint类:

代码语言:javascript
复制
public class MainEntryPoint implements EntryPoint {
    private VerticalPanel mainPanel = new VerticalPanel();
    private DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
    private NorthMenu northMenu = new NorthMenu();
    private VerticalPanel mainPanel = new VerticalPanel();
    //other panels

    @Override
    public void onModuleLoad() {
        dockLayoutPanel.addNorth(northMenu, 40);
        dockLayoutPanel.add(mainPanel);
        //add other panels
        RootLayoutPanel panel = RootLayoutPanel.get();
        panel.add(dockLayoutPanel);     
    }
}

WestPanel应该用MyOtherPanel替换DockLayout的mainPanel:

代码语言:javascript
复制
public class WestMenu extends Composite {
    private StackLayoutPanel stackLayoutPanel = new StackLayoutPanel(Unit.EM);  
    public WestMenu(){  
        Tree configuration = new Tree();
        configuration.addSelectionHandler( new SelectionHandler(){
            @Override
            public void onSelection(SelectionEvent event) {
                MyOtherPanel builderPanel = new MyOtherPanel();
                RootLayoutPanel panel = RootLayoutPanel.get();
                DockLayoutPanel dlp = (DockLayoutPanel)panel.getWidget(0);
                dlp.add(builderPanel);
            }           
        });
        //other init configurations
        initWidget(stackLayoutPanel);
    }   
} 

我一直收到一个异常,说我不能替换它。更换/更换DockLayoutPanel中央面板的最佳方式是什么?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 18:12:06

您需要显式删除中心(请参阅DockLayoutPanel中受保护的insert方法的javadoc ):

代码语言:javascript
复制
dlp.remove(currentCenterPanel);

但这对开发人员不是很友好,因为您需要跟踪中心小部件,并始终确保在添加之前调用remove。我不知道他们为什么要这样做。

另一种解决方案是通过setWidget简单地将SimpleLayoutPanel作为中心小部件,并在此面板上设置您自己的中心小部件。这样你就不用做删除操作了。

后一种技术还可以通过将ActivityManager设置为ActivityManager.setDiplay(...)中的显示来将实现与SimpleLayoutPanel相结合。由于您的实现看起来像是应用程序的主要内容,因此ActiviyManager在这里可能很有用。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7672629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档