2013-12-17 54 views
1

我正嘗試使用頂部的菜單欄和底部的BorderLayoutContainter創建一個簡單的頁面示例。我無法弄清楚如何讓底部自動適應剩下的尺寸。GXT中的NorthSouthContainer佈局大小

我有這樣的事情:

public void onModuleLoad() { 
    MenuBar mbar = new MenuBar(); 
    // Add menus... 

    BorderLayoutContainer blc = new BorderLayoutContainer(); 
    // Create borderlayout parts... 

    NorthSouthContainer mainCon = new NorthSouthContainer(); 
    mainCon.addNorthWidget(mbar); 
    mainCon.addSouthWidget(blc); 

    ViewPort vp = new ViewPort(); 
    vp.add(mainCon); 
    RootPanel.get().add(vp); 
} 

菜單欄顯示正常,但底部 - 的BorderLayoutContainer - 是完全坍縮。如果我只是將BorderLayoutContainer添加到ViewPort,它會正確顯示,即填充整個屏幕。

爲什麼不充分利用NorthSouthContainer的南部傳遞給BorderLayoutContainer大小。或者還有其他事情正在發生?

+0

? –

+0

我正在使用GXT 3.0 – siki

回答

0

幾周前我有同樣的問題。它似乎是GXT中的一個bug,在某些地方,小部件的CSS不正確ensureInjected()。如您所知,您的northwidget和southwidget從父容器獲取其高度屬性。你可以通過傳遞樣式屬性的內部部件,像這樣避免這個錯誤:

mbar.getElement().getStyle().setProperty("height", "50%"); 
blc.getElement().getStyle().setProperty("height", "50%"); 

當然,我知道這是不是一個真正乾淨的解決方案,但它是一種可能性。如果您想完全訪問解決方案,則需要將自己的外觀實現到BorderLayoutContainer。唷...

0

我有同樣的問題。作爲一種解決方法,如果您將南小部件封裝到另一個Viewport實例中,它可以爲我工作(使用GXT 3.1.1)。

0

它是一個官方的錯誤。您可以嘗試使用VerticalLayoutContainer作爲後續

VerticalLayoutContainer vlc = new VerticalLayoutContainer(); 
vlc.add(mBar,new VerticalLayoutData(1,-1)); 
vlc.add(blc,new VerticalLayoutData(1,1)); 

查看更多關於VerticalLayoutData這裏是您使用該GXT版本