2009-07-22 110 views
1

對於我正在開發的GWT應用程序,我需要以編程方式更改瀏覽器窗口的高度。有沒有辦法在GWT中做到這一點?我已經試過如下:以編程方式調整GWT中的瀏覽器窗口

public static native void setWindowHeight(final int height) /*-{ 
    $wnd.resizeTo($wnd.outerWidth, height); 
}-*/; 

但是,這並不只是改變高度,這也與食堂的寬度。此外,我想在GWT Java代碼中保留這個調整大小的功能(這使用JSNI)。

編輯:這實際上不會影響大多數瀏覽器的寬度 - 它調整到以前的寬度和新的高度。儘管出於某種原因,它會讓我的Google託管模式瀏覽器的寬度變得「混亂」。

我實際上會更喜歡調整瀏覽器客戶區域的大小(即排除瀏覽器的工具欄和滾動條等)而不是窗口本身。

例如,com.google.gwt.user.client.Window具有以下方法:getClientWidth()和getClientHeight()。我想要一些相當於setClientWidth(int width)和setClientHeight(int height)的東西(請記住這些設置器實際上不存在)。

回答

4

據我所知,你必須使用JSNI來做這些事情。 Window.scrollTo(...)是另一種可以派上用場的方法,它不能通過GWT窗口使用。

但是你可以做的是編寫自己的擴展窗口來擴展GWT窗口。

例如:

public class ExtendedWindow extends Window { 
    public static native void resizeTo(final int width, final int height) /*-{ 
     $wnd.resizeTo(width, height); 
    }-*/; 

    public static native void scrollTo(final int xpos, final int ypos) /*-{ 
     $wnd.scrollTo(xpos, ypos); 
    }-*/; 
    // ...etc... 
} 

,那麼你會使用ExtendedWindow當你需要這些擴展的行爲。

我不相信setClientHeight()等將可用,因爲這不是通過Javascript可用。但我相信你可以使用resizeTo(...)進行模擬,首先計算outerHeightclientHeight之間的差值,然後在更改clientHeight時保持差值。

我希望這是有幫助的。

相關問題