2008-09-17 124 views
18

我想要一個GWT中的面板來填充頁面,而不必實際設置大小。有沒有辦法做到這一點?目前我有以下幾種:在GWT中創建一個流體面板來填充頁面?

public class Main implements EntryPoint 
{ 
    public void onModuleLoad() 
    { 
     HorizontalSplitPanel split = new HorizontalSplitPanel(); 
     //split.setSize("250px", "500px"); 
     split.setSplitPosition("30%"); 

     DecoratorPanel dp = new DecoratorPanel(); 
     dp.setWidget(split); 

     RootPanel.get().add(dp); 
    } 

} 

在前面的代碼片段中,什麼也沒有顯示出來。有沒有我缺少的方法調用?

謝謝。


UPDATE年09月17 '08 20:15

我把一些按鈕,每邊(顯式設置其大小),並且仍然無法正常工作。我真的很驚訝沒有像FillLayout類或setFillLayout方法或setDockStyle(DockStyle.Fill)或類似的東西。也許這是不可能的?但是像GWT一樣受歡迎,我認爲這是可能的。

UPDATE年09月18 '08在14:38

我已經嘗試設置RootPanel寬度和高度爲100%,並且仍然沒有奏效。感謝您的建議,但似乎它可能會起作用。任何其他建議?

回答

19

谷歌已經回答了你的問題的主要部分在他們的常見問題之一: http://code.google.com/webtoolkit/doc/1.6/FAQ_UI.html#How_do_I_create_an_app_that_fills_the_page_vertically_when_the_b

主要的一點是,你不能設置高度爲100%,你必須做這樣的事情:

final VerticalPanel vp = new VerticalPanel(); 
vp.add(mainPanel); 
vp.setWidth("100%"); 
vp.setHeight(Window.getClientHeight() + "px"); 
Window.addResizeHandler(new ResizeHandler() { 

    public void onResize(ResizeEvent event) { 
    int height = event.getHeight(); 
    vp.setHeight(height + "px"); 
    } 
}); 
RootPanel.get().add(vp); 
+2

這是一個很好的答案,但現在已有內置GWT的功能。查看我的答案瞭解一些鏈接。 – Brad 2012-05-23 15:45:41

0

我認爲你需要把事情的分裂(split.setLeftWidget(部件),split.setRightWidget(部件)OR split.add(部件)的左側和/或右,這將首先增加左邊,然後右邊),以便任何東西出現。

0

嘗試在添加小部件之前將rootpanel的寬度和/或高度設置爲100%。

0

面板自動調整爲最小的可見寬度。所以你必須調整你添加到RootPanel的每個面板到100%,包括你的SplitPanel。 RootPanel本身不需要調整大小。因此,嘗試:

split.setWidth("100%"); 
split.setHeight("100%"); 
+0

Drejc, 感謝您的回覆。我試着將SplitPanel尺寸和RootPanel尺寸都設置爲100%。仍然沒有運氣。再次感謝。 – 2008-09-19 14:26:11

+0

設置您的CSS樣式,以便面板邊框可見。您將看到哪個面板需要調整大小。當我不知何故丟失面板時,這是我首選的故障排除方法,我不知道哪一個負責。 – Drejc 2008-09-21 17:04:01

0

DecoratorPanel文檔說:

如果設置DecoratorPanel的寬度或高度,則需要將middleCenter單元的高度和寬度設置爲100%,使中間的中心單元佔據了所有的可用空間。如果你沒有設置DecoratorPanel的寬度和高度,它會緊緊包裹它的內容。

0

問題是DecoratorPanel middleCenter單元格會默認填充內容,而SplitPanel不允許「100%」樣式大小設置。 要做你想做的,在你的CSS上適當地設置表格的樣式:

.gwt-DecoratorPanel。middleCenter {height = 100%;高度:100%; 寬度:100%; }

13

本的回答非常好,但也過時了。 GWT 1.6中需要調整大小處理程序,但我們現在處於2.4。您可以使用讓您的內容垂直填充頁面。請參閱使用此面板的sample mail app

0

對於我來說,如果我只是設置像

panel.setWidth( 「100%」)的寬度它不工作;

面板是一個VerticalPanel,它只是隨機獲得一個大小,我不知道它來自哪裏。但是,在我添加該行後,@Ben Bederson評論爲我工作得非常好:

panel.setWidth(Window.getClientWidth()+「px」);

就這樣,沒有別的。謝謝