GWT: изменяемый размер макета без RootLayoutPanel? - PullRequest
2 голосов
/ 29 мая 2011

Я использую GWT 2.3, и у меня, как мне кажется, чрезвычайно распространенный сценарий компоновки, который, похоже, не очень хорошо поддерживается, но я надеюсь, что StackOverflow может сказать мне, что я смотрю на проблему неправильно.

Я использую панели макетов, чтобы упорядочить свое приложение. Обычно вы помещаете панель макета в RootLayoutPanel, где она занимает все окно браузера.

Однако у меня есть верхний и нижний колонтитулы сайта, которые должны находиться за пределами GWT.

Проблема в том, что, как ясно сказано в документах , если вы вставляете панель макета в произвольный HTML-элемент страницы вместо использования RootLayoutPanel, вы теряете поведение автоматического изменения размера. Необходимо указать начальный размер панели макета и изменить размер вручную.

Как мне добиться этого изменения размера вручную? Я почти уверен, что могу отслеживать изменение размера HTML-элемента через javascript, но как мне тогда взаимодействовать с GWT, чтобы сообщить ему новый размер?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Я бы порекомендовал использовать абсолютное позиционирование CSS в вашем HTML-файле:

<body style='position:absolute; top:10em; bottom:10em; left:0; right:0;>
  <div id="top" style="position:absolute; left:0; top:-10em; bottom:0; right:0;">
    <p> THIS IS THE TOP BANNER </p>
  </div>

    <div id="bottom" style="position:absolute; left:0; top:100%; bottom:0; right:0;">
      <p> THIS IS THE BOTTOM BANNER </p>
    </div>

</body>

Ваша RootLayoutPanel будет прикреплена к телу, которое теперь имеет верхний и нижний поля 10em.

1 голос
/ 29 мая 2011

Одно возможное чистое решение GWT. Вы можете добавить обработчик изменения размера. В событии resize вы можете получить новые размеры и изменить размер вашего компонента.

Образец GWT mail pre GWT 2.0 Mail использовал «ручное» изменение размера (но оно немного устарело).

http://code.google.com/p/google-web-toolkit/source/browse/releases/1.7/samples/mail/src/com/google/gwt/sample/mail/client/Mail.java

По сути, вы хотите подключить обработчик событий изменения размера окна:

 // Hook the window resize event, so that we can adjust the UI.
 Window.addResizeHandler(new ResizeHandler() {
   public void onResizeA(int width, int height) {
     // Adjust each immediate child widget by calling child.onResize() 
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...