Внутреннее содержимое TabLayoutPanel не отображается - PullRequest
0 голосов
/ 28 октября 2010

Все, Я хочу панель меню вкладки, которая живет внутри моей главной ScrollPanel. Каждый раз, когда пользователь щелкает пункт меню на моей главной странице, центр ScrollPanel удаляет любой виджет, который был там раньше, и добавляет новый.

Пока все работает нормально, пока я не представил TabLayoutPanel. Как вы уже догадались, TabLayout показывает только вкладки, а не содержимое, которое не имеет размера, и да, я хочу его на 100% ширины и высоты.

Я видел это по всей сети, и решение состоит в том, чтобы присоединить его к RoolLayoutPanel, потому что TabLayoutPanel установлен в абсолютное значение, однако это не работает для меня, потому что я не хочу присоединять его к корневому макету, а к этой внутренней клиентской области / ScrollPanel.

Все, что я хочу, это система с вкладками, так что если TabLayoutPanel не лучший выбор, то кто-нибудь порекомендует другой? Я нахожусь в режиме стандартов, так как я предполагаю, что я должен строить против этого для лучшей совместимости браузера.

вот моя структура страницы:

RootLayoutPanel rootPanel = RootLayoutPanel.get();
rootPanel.setSize("940px", "940px");

mainpanel = new FlowPanel();
mainpanel.setSize("100%", "100%");
rootPanel.add(mainpanel);

header = new FlowPanel();
mainpanel.add(header);

ScrollPanel mainbody = new ScrollPanel();
mainpanel.add(mainbody);

footer = new FlowPanel();
mainpanel.add(footer);

И всякий раз, когда я хочу изменить содержимое основного тела, я звоню:

mainbody.clear()
mainbody.add(..)

Любая помощь будет оценена, спасибо

Ответы [ 2 ]

0 голосов
/ 25 сентября 2012

Мое решение:

  1. используйте RootLayoutPanel вместо RootPanel

    public void onModuleLoad() {
        binwebtabs bwt = new binwebtabs();
        //RootPanel.get("mainpage").add(bwt);
    
        RootLayoutPanel rp = RootLayoutPanel.get();
        rp.add(bwt);
    }
    
  2. используйте g:LayoutPanel в корнеXML uibinder, тогда вы можете добавить любой виджет (например, lable) и g:TabLayoutPanel в отдельном g:layer

    <g:LayoutPanel>
    <g:layer>
      <g:Label>Bin Web </g:Label>
    </g:layer>
    <g:layer>
    <g:TabLayoutPanel ui:field="tabLayoutPanel" barUnit="PX" barHeight="60">
    ... 
    </g:TabLayoutPanel>
    

Таким образом, содержимое g:TabLayoutPanel будет видимым иg:TabLayoutPanel не должен быть в корне.

0 голосов
/ 25 мая 2011

Я не уверен, что понял, что ты задумал. Но как насчет использования DeckLayoutPanel? Панель DeckLayoutPanel содержит «колоду» с несколькими виджетами и отображает один из них одновременно. Вы даже можете иметь скользящую анимацию во время переходов.

http://google -web-toolkit.googlecode.com / SVN / Javadoc / 2,3 / ком / Google / GWT / пользователь / клиент / щ / DeckLayoutPanel.html

...