GWT布局问题

时间:2013-12-09 14:28:19

标签: gwt gxt

我写下面的代码,我无法将面板设置到容器的最右侧。我希望控制所有侧面移动面板,如东,西,北和南。

public void onModuleLoad() {
    Viewport viewport = new Viewport();
    viewport.setLayout(new FlowLayout());
    viewport.add(createContainer());
    RootPanel.get().add(viewport);
}

private Widget createContainer() {
    // TODO Auto-generated method stub
    LayoutContainer container = new LayoutContainer();
    container.setLayout`enter code here`(new BorderLayout());
    ContentPanel panel = new ContentPanel(new FitLayout());
    panel.setHeading("The Legend");
    BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 250);
    westData.setSplit(true);
    westData.setCollapsible(true);
    westData.setMargins(new Margins(0, 3, 0, 0));
    container.add(panel, westData);
    return container;
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

看起来你正在使用GXT。这是一个非常重要的信息,因为GXT布局使用的是除本机GWT布局之外的其他类。

看看Sencha Showcase:

http://www.sencha.com/examples/#ExamplePlace:borderlayout

BorderLayout示例显示了如何创建边框布局。

首先创建一个BorderLayoutContainer:

final BorderLayoutContainer con = new BorderLayoutContainer();
con.setBorders(true);

然后为您喜欢的区域创建面板:

ContentPanel north = new ContentPanel();
ContentPanel west = new ContentPanel();
ContentPanel center = new ContentPanel();
center.setHeadingText("BorderLayout Example");

center.setResize(false);
center.add(new Label("center"));
 
ContentPanel east = new ContentPanel();
ContentPanel south = new ContentPanel();

创建ContentPanels后,为每个ContentPanel定义BorderLAyoutData:

BorderLayoutData northData = new BorderLayoutData(100);
northData.setMargins(new Margins(5));
northData.setCollapsible(true);
northData.setSplit(true);
 
BorderLayoutData westData = new BorderLayoutData(150);
westData.setCollapsible(true);
westData.setSplit(true);
westData.setCollapseMini(true);
westData.setMargins(new Margins(0, 5, 0, 5));
 
MarginData centerData = new MarginData();
BorderLayoutData eastData = new BorderLayoutData(150);
eastData.setMargins(new Margins(0, 5, 0, 5));
eastData.setCollapsible(true);
eastData.setSplit(true);

BorderLayoutData southData = new BorderLayoutData(100);
southData.setMargins(new Margins(5));
southData.setCollapsible(true);
southData.setCollapseMini(true);

定义布局后,只需将小部件添加到BorderLAyoutContainer:

con.setNorthWidget(north, northData);
con.setWestWidget(west, westData);
con.setCenterWidget(center, centerData);
con.setEastWidget(east, eastData);
con.setSouthWidget(south, southData);

最后,将BorderLAyoutContainer添加到viewPort:

viewport.add(con); 

要将小部件放在最右侧,请使用:

con.setEastWidget(widget, eastData);

希望有所帮助。

答案 1 :(得分:0)

我也面临着这个问题,因为每当我试图坍塌北方时,那个空间就不会被南方占据,反之亦然。我希望每当我们折叠contentPanel(北或南)时,其空间应由其他面板占用。

我在我的项目中使用gxt 3.0.1。

对于gxt 2.x,可以使用FitLayout()并通过设置布局来完成,但在GXT 3.0.1中,API是不同的。我无法使用FitLayout()。

任何新想法的人。