我使用SplitLayoutPanel时不显示GWT小部件

时间:2011-09-07 17:20:38

标签: java gwt widget

我是GWT的新手,我正在努力完成我的第一个网页。

我创建了2个复合小部件 - ListWidgetMaintenanceWidget。当我将它们都添加到FlowPanel时,它们都会显示出来。但是,当我尝试使用SplitLayoutPanel时,取决于我是如何做的,要么都没有显示,要么只显示其中一个。

以下是我的代码:

public MainPanel(){
    list = new ListWidget();
    maintenance = new MaintenanceWidget();
    panel = new SplitLayoutPanel();

    panel.addWest(list, 200);
    panel.addNorth(maintenance, 250);


    initWidget(panel);
}

在我的入口点onModuleLoad()方法中,我创建了一个MainPanel的实例并将其添加到根窗格。

使用此代码,我会在列表所在的西部找到一个空白区域,顶部的维护小部件位于其下方。

我尝试了panel.add****()方法的不同配置,但没有任何结果让我得到我正在寻找的结果。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

确保您的HTML模板中有doctype声明(例如<!doctype html>),因为SplitLayoutPanel要求浏览器在标准模式下工作。

答案 1 :(得分:1)

我找到了一些示例代码here,它使用了我之前从未见过的方法。

我的代码现在如下所示:

public MainPanel(){
    list = new ListWidget();
    maintenance = new MaintenanceWidget();
    panel = new SplitLayoutPanel();

    panel.setPixelSize(500, 400);

    panel.addWest(list, 200);
    panel.add(maintenance);     
    initWidget(panel);
}

现在它有效。谢谢你的帮助!

答案 2 :(得分:0)

如果没有弄错,SpliLayoutPanel必须附在文档正文上。 尝试类似:

public void onModuleLoad() {
    SplitLayoutPanel panel = new SplitLayoutPanel();

    panel.addWest(new Label("WEST"), 50);
    panel.addNorth(new Label("NORTH"), 50);
    panel.addEast(new Label("EAST"), 50);
    panel.addSouth(new Label("SOUTH"), 50);
    panel.add(new Label("CONTENT HERECONTENT HERECONTENT HERECONTENT HERECONTENT HERECONTENT HERE"));

    RootLayoutPanel.get().add(panel); //This gets the body element and attaches itself to it, then adds panel.
}

不应该太难将其应用到您的代码中。