2009-07-22 13 views
1

私が開発しているGWTアプリケーションでは、ブラウザウィンドウの高さをプログラムで変更する必要があります。 GWTでこれを行う方法はありますか?私は以下を試しました:GWTのブラウザウィンドウのプログラムによるサイズ変更

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

しかし、これは高さを変えるだけでなく、幅も乱します。さらに、このサイズ変更機能をGWT Javaコード内に保持したいと考えています(これはJSNIを使用しています)。

編集:実際にはほとんどのブラウザの幅に影響を与えません。これは、以前の幅と新しい高さにサイズ変更されます。私のGoogle Hosted Modeブラウザでは何らかの理由で幅が「乱れ」ます。

実際には、ウィンドウの代わりにブラウザのクライアント領域(ブラウザのツールバーやスクロールバーなどを除く)のサイズを変更するものが好きです。

たとえば、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を変更するとその差を維持してください。

私はこれが役に立ちそうです。