GWT TabLayoutPanel не отображает содержимое графика - PullRequest
3 голосов
/ 23 сентября 2010

У меня есть структура, похожая на следующую

<g:TabLayoutPanel ui:field="rightTabPanel" 
             width="100%" height="100%" 
                     barUnit="EM" barHeight="3"> 
    <g:tab> 
          <g:header>Graph</g:header> 
                    <g:FlowPanel ui:field="graphContent"/> 
     </g:tab> 
      <g:tab> 
           <g:header>Data</g:header> 
                      <g:FlowPanel ui:field="dataContent"/> 
     </g:tab> 
 </g:TabLayoutPanel> 

У меня есть две вкладки, на которых показан график, а на другой - данные.Однако содержимое внутри вкладки не отображается.Если я поставлю

<g:FlowPanel ui:field="graphContent"/>

вне TabLayoutPanel, я смогу увидеть график, но если я поставлю, как показано выше, график не виден.Любая подсказка будет полезна.заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 23 сентября 2010

Для правильной работы TabLayoutPanel необходимо убедиться в следующем:

1) Вы находитесь в стандартном режиме (используя)
2) Вы используете одну из новых панелей Layout из GWT 2.0 для родительского элемента TabLayoutPanel.
ИЛИ
Вы явно указываете высоту для TabLayoutPanel (и проценты не будут работать, вам придется использовать другой блок).

TabLayoutPanel использует абсолютное позиционирование в зависимости от размера его контейнера * Layout.Это не будет автоматически заполнять пространство для нормальных родительских элементов (таких как "div").Так что, надеюсь, вы можете просто переключиться на использование одной из * LayoutPanels в качестве родительской (например, DockLayoutPanel).

Если использование * LayoutPanel не вариант : так как TabPanel не делаетне работают в стандартном режиме (который вам действительно нужно использовать, если вы хотите быть совместимым с несколькими браузерами), а TabLayoutPanel не очень хорошо работает с текучими макетами, в итоге я создал свою собственную версию TabPanel и использовал еевместо.Если вы можете создавать свои собственные виджеты и не можете использовать одну из * LayoutPanels, я бы порекомендовал создать свой собственный или расширить один из существующих виджетов.

В качестве альтернативы, вы можете использовать CSSили JavaScript, чтобы изменить область содержимого вкладки с позиции: абсолютная на позицию: относительная, но для меня это выглядит как взлом и может в будущем сломаться.

5 голосов
/ 23 сентября 2010

Не знаю, поможет ли это, но, возможно, попробуйте использовать <g:TabPanel> вместо <g:TabLayoutPanel>. Я знаю, что это устарело.

У меня также были проблемы с TabLayoutPanel, но они исчезли, когда я снова переключился на TabPanel. TabLayoutPanel имеет проблемы с размерами, например, не может быть помещен в div, он должен «владеть» целым окном, так что это совсем не то, что TabPanel.

...