以编程方式调整GWT中的浏览器窗口大小

时间:2009-07-22 21:45:02

标签: 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)(请记住这些setter实际上并不存在)。

1 个答案:

答案 0 :(得分: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时保持差异。< / p>

我希望这有用。