2013-12-09 51 views
0

我寫下面的代碼,我無法將面板設置到容器的最右邊。我想要控制移動面板的所有邊,如東,西,南,北。GWT佈局問題

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; 
} 

有人可以幫忙嗎?

+0

「最右邊」和「LayoutRegion.WEST」? –

回答

1

看起來您正在使用GXT。這是一個非常重要的信息,因爲GXT佈局使用其他類而不是本地GWT佈局。

看看一個的煎茶案例:

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後定義BorderLAyoutData每個的ContentPanel:

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); 

在您定義了佈局之後,只需添加您的小部件t ○BorderLAyoutContainer:

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

最後,BorderLAyoutContainer添加到視域:

viewport.add(con);  

把你的小部件上的最右側,使用:

con.setEastWidget(widget, eastData); 

希望有所幫助。

+0

好的寫作,但它看起來像你使用GXT 3,而問題中的代碼是使用GXT 2. –

+0

是的,你是對的,那就是GXT 3.沒想到,有人會開始使用GXT 2。並沒有提示,使用哪個版本。 –

+0

一致認爲,新項目在GXT 2中沒有意義。我只能說因爲代碼中的幾個類只存在於2中,而不是3中。 –

0

我也面臨這個問題,因爲每當我試圖崩潰北方那麼這個空間不被南方佔領,反之亦然。我希望每當我們摺疊contentPanel(北或南)時,它的空間應該被其他面板佔用。

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

對於gxt 2.x,可以使用FitLayout()和設置佈局來完成,但在GXT 3.0.1中,API是不同的。我無法使用FitLayout()。

任何新的想法傢伙。