2009-07-22 15 views
1

Für die GWT-App, die ich entwickle, muss ich die Höhe des Browserfensters programmgesteuert ändern. Gibt es eine Möglichkeit, dies in GWT zu tun? Ich habe folgendes versucht:Programmgesteuertes Ändern der Größe des Browserfensters in GWT

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

Aber das ändert nicht nur die Höhe, es vermasselt auch mit der Breite. Darüber hinaus möchte ich diese Größenanpassung Funktionalität in GWT Java-Code (das JSNI verwendet).

Edit: Dies stört tatsächlich nicht die Breite der meisten Browser - es ändert sich auf die vorherige Breite und neue Höhe. Es macht die Breite in meinem Google Hosted-Modus-Browser aber aus irgendeinem Grund "durcheinander".

Ich würde eigentlich etwas bevorzugen, das die Größe des Client-Bereichs des Browsers (d. H. Ohne die Symbolleisten und Bildlaufleisten des Browsers usw.) anstelle des Fensters selbst ändern würde.

Zum Beispiel hat com.google.gwt.user.client.Window die folgenden Methoden: getClientWidth() und getClientHeight(). Ich möchte etwas, das setClientWidth (int width) und setClientHeight (int height) entspricht (bedenken Sie, dass diese Setter nicht wirklich existieren).

Antwort

4

Soweit ich weiß, müssten Sie JSNI für solche Dinge verwenden. Window.scrollTo (...) ist eine andere Methode, die nützlich wäre, die nicht über das GWT-Fenster verfügbar ist.

Was Sie tun könnten, ist, schreiben Sie Ihr eigenes erweitertes Fenster, das das GWT-Fenster erweitert.

Zum Beispiel:

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... 
} 

Sie würden dann ExtendedWindow verwenden, wenn Sie diese erweiterten Verhaltensweisen benötigen.

Ich glaube nicht setClientHeight() etc wird verfügbar sein, da dies nicht über Javascript verfügbar ist. Aber ich bin mir sicher, dass Sie es mit resizeTo(...) simulieren können, indem Sie zuerst die Differenz zwischen outerHeight mit clientHeight berechnen und dann den Unterschied beibehalten, wenn Sie die clientHeight ändern.

Ich hoffe, das ist hilfreich.

Verwandte Themen