2012-10-26 34 views
0

我正在開發一個使用GWT 2.3.0和GXT 2.2.5的應用程序。調整容器大小時允許滾動條

我有一個LayoutContainer,ScrollMode設置爲AUTO,佈局設置爲RowLayout,水平方向。它被用作我的應用程序的顯示窗口。

問題是,當瀏覽器調整大小以顯示垂直滾動條時,內容不會調整大小以解決它,導致即使不需要水平滾動條也會出現。

有沒有辦法讓渲染窗口小部件時滾動條佔用的空間佈局帳戶?

+0

好的,經過一番研究,我已經部分發現了答案。 RowLayout確實有一個名爲setAdjustForScroll()的方法,它自動調整內容的大小以允許滾動條空間。 問題是該方法是否存在滾動條。所以我仍然需要一種方法來確定滾動條是否存在,無論是因爲窗口大小調整還是包含小部件的動態更改。 ScrollContainer沒有任何由滾動條顯示的註冊事件,我不知道我還可以用作監聽器。 – NestorDRod

回答

0

好吧,這是有點棘手的幫兇。我會做這樣的: 入口點的(讓你知道它始終是活動的)如果你選擇觸發事件添加一個resize處理程序窗口

Window.addResizeHandler(new ResizeHandler() { 
    @Override 
    public void onResize(ResizeEvent event) { 
     // Fire Event containing the new size informing the application of the change 
     // Or resize the Layout container 
    } 
} 

和您所使用的MVP模式那麼通過事件總線觸發事件並在應用程序中隨時隨地捕捉事件非常簡單。

這裏唯一的問題是,您可能想在定時器內部運行onResize()中的函數,因爲在大多數情況下,報告的窗口寬度/高度不具有最終值,這是由於事件在調整大小完成之前觸發的。

+0

所以你說我必須從頭開始實現一個處理程序來計算滾動條是否會在調整大小時顯示,並手動重新定義包含的小部件的大小來解決它。 這是我希望GXT自動處理的那種功能。非常不滿意。 – NestorDRod

+0

GXT爲LayoutContainer調整大小setAutoHeight(true)和setAutoWidth(true),但它的內容是完全不同的問題。 –