2009-07-22 4 views
1

Для приложения GWT, которое я разрабатываю, мне нужно программно изменить высоту окна браузера. Есть ли способ сделать это в GWT? Я пробовал следующее:Программно изменить размер окна браузера в GWT

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

Но это не просто изменение высоты, но и беспорядок с шириной. Более того, я хотел бы сохранить эту функцию изменения размера в коде Java GWT (это использует 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(...), сначала вычислив разницу между outerHeight с помощью clientHeight, а затем сохраняя разницу при изменении clientHeight.

Надеюсь, это полезно.

Смежные вопросы