2015-05-26 70 views
0

我正在開發一個基於GWT的圖形用戶界面。我不是圖形用戶界面和GWT的專家。就這樣,我在做什麼是一個while循環中創建StackLayoutPanel如下:StackPanel的動態調整大小

while(mainIterator.hasNext()){ 
    stackLayoutPanel.add(internalVerticalPanel, sZone, 30); 
} 

我省略了internalVerticalPanel對象的信息,但基本上都是標籤和Horizo​​ntalPanels。

但是,這個internalVerticalPanel並不總是包含相同數量的對象,因此,每次迭代的大小都不相同。然後,在顯示信息時,我注意到StackPanel的總大小除以包含的標題或元素的數量。我想要做的是建立每個標題的大小,以便調整VerticalPanel的內容大小。我的意思是,而不是具有相同大小的元素,我希望每個元素的大小與內容相關聯。可能嗎?如果是這樣,怎麼樣?

編輯:我已經進行了在響應中給出的建議,但這不是解決辦法。正如你在附圖中看到的,改變的是標題的大小,但我想保留標題並修改內部內容的大小。現在,internalVerticalPanel隱藏在標題後面。

enter image description here

在下面的兩個畫面可以看到兩個例子,一個具有數據將被示出和所述面板已很好地固定,同時在第二個沒有數據和一個大的空的空間。我想調整這些空間的大小,以便繪製可用數據的功能。

enter image description here

enter image description here

在此先感謝

回答

0

我還沒有在運行時檢查這一點,但在我看來,你可以做

int myDesiredHeight = 0;  
while(mainIterator.hasNext()){ 
    stackLayoutPanel.add(internalVerticalPanel, sZone, 30); 
    myDesiredHeight += 30; 
} 
stackLayoutPanel.setHeight(myDesiredHeight + "px"); 

這樣你調整用於容納內容的stacklayout面板的大小。 關於標題的不同大小,我認爲這種類型的面板接受自定義標題或安全的html,所以你應該能夠很容易地設置你的標題的樣式,例如。使用這種方法(StackLayoutPanel,在GWT 2.7行168):

public void add(final Widget widget, SafeHtml header, double headerSize) {...} 

編輯:你可以嘗試沿着線的東西:

StackLayoutPanel stackLayoutPanel = new StackLayoutPanel(Style.Unit.PX); 

VerticalPanel myWidget1 = new VerticalPanel(); 
SafeHtml myHeader1 = SafeHtmlUtils.fromSafeConstant("My header 1 title"); 

VerticalPanel myWidget2 = new VerticalPanel(); 
SafeHtml myHeader2 = SafeHtmlUtils.fromSafeConstant("My header 2 title"); 

stackLayoutPanel.add(myWidget1,myHeader1,100); 
stackLayoutPanel.add(myWidget2,myHeader2,50); 

// and so on 
+0

首先對您的回覆,謝謝!如果我理解你的代碼,最後,你設置一個整體大小除以標題的數量,對吧?但是,我正在尋找的是避免這種分裂。我的意思是,具有10個標題的1000px的StackPanel將繪製10個堆疊部分,每個部分都是100px。相比之下,我想要繪製10個包含不同大小的垂直面板(第一個200px,第二個50px等)的堆疊零件。在我的情況下,SafeHtml標頭是一個簡單的名稱爲String的字符串。 –

+0

嗨,我編輯了答案,以顯示不同高度的SafeHtml標題的例子。 –

+0

非常感謝,我會在本週嘗試它,我會讓你知道結果!再次感謝!! –