2011-12-19 2 views
0

Мне нужна помощь с кодом gwt (ui: binder). Я хотел бы добавить содержимое элемента сНа в центр моего DockLayoutPanelgwt-ui: binder: исправьте мой код

интересная часть моего HTML файл:

...  
    <body> 
     <div id="Browser"></div> 
    </body> 
    ... 

Моего ui.xml:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
    <ui:style> 
     .westPanel { 
      background-color: #00FFFF; 
     } 
     .northPanel { 
      background-color: #FF0000; 
     } 
     .southPanel { 
      background-color: #FFFF00; 
     } 
     .centerPanel { 
      background-color: #FFFFFF; 
     } 
    </ui:style> 
    <g:DockLayoutPanel unit='EM'> 
     <g:north size='8'> 
     <g:FlowPanel styleName="{style.northPanel}"> 
      <g:Label>NORTH panel</g:Label> 
     </g:FlowPanel> 
     </g:north> 
     <g:west size='5'> 
     <g:FlowPanel styleName="{style.westPanel}"> 
      <g:Label>Navigation panel</g:Label> 
      <g:ListBox ui:field='listBox' visibleItemCount='5'/> 
     </g:FlowPanel> 
     </g:west> 
     <g:center> 
     <g:FlowPanel styleName="{style.centerPanel}"> 

<!--    <g:HTMLPanel> --> 
<!--    <div id="Browser"> --> 
<!--   </div> --> 
<!--    </g:HTMLPanel> --> 

     </g:FlowPanel> 
     </g:center> 
     <g:south size="5"> 
     <g:FlowPanel styleName="{style.southPanel}"> 
      <g:Label>SOUTH panel</g:Label> 
     </g:FlowPanel> 
     </g:south> 
    </g:DockLayoutPanel> 
</ui:UiBinder> 

Моего владелец класс:

public class MyDockLayoutPanel extends Composite { 

private static MyDockLayoutPanelUiBinder uiBinder = GWT 
     .create(MyDockLayoutPanelUiBinder.class); 

@UiField ListBox listBox; 

interface MyDockLayoutPanelUiBinder extends 
     UiBinder<Widget, MyDockLayoutPanel> { 
} 

public MyDockLayoutPanel() { 
    initWidget(uiBinder.createAndBindUi(this)); 
} 

public MyDockLayoutPanel(String... paths) { 
    initWidget(uiBinder.createAndBindUi(this)); 
    for (String path : paths) { 
     listBox.addItem(path); 
    } 
}  
} 

Это не сработало для меня:

public class HelloUiBinder implements EntryPoint { 

    public void onModuleLoad() { 

     RootLayoutPanel.get().add(new MyDockLayoutPanel()); 
     MyDockLayoutPanel mydocklayoutpanel = new MyDockLayoutPanel("able","baker","charlie"); 

     MyDockLayoutPanel mydocklayoutpanelID = new MyDockLayoutPanel(); 

     RootPanel.get("Browser").add(mydocklayoutpanelID); 

     RootLayoutPanel.get().add(mydocklayoutpanelID); 
     RootLayoutPanel.get().add(mydocklayoutpanel); 
    } 
} 

Как добавить «Браузер» в центр моей панели mydocklayoutpanel? Спасибо заранее!

ответ

0

Обычно виджеты добавляются в div, а не наоборот. Таким образом, вы можете создать виджет, который обмотать "Browser" с помощью HTMLPanel, а затем добавить его в MyDockLayoutPanel, вот пример:

Browser.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
<ui:style> 
    <g:HTMLPanel> 

    </g:HTMLPanel> 

Browser.java

public class BrowserPanel extends Composite { 
    private static BrowserPanelUiBinder uiBinder = 
    GWT.create(BrowserPanelUiBinder.class); 
    interface BrowserPanelUiBinder extends UiBinder<Widget, BrowserPanelPanel> {} 

    public BrowserPanel() { 
    initWidget(uiBinder.createAndBindUi(this)); 
    } 
}  

Entrypoint

public class HelloUiBinder implements EntryPoint { 
public void onModuleLoad() { 
MyDockLayoutPanel mydocklayoutpanel = new MyDockLayoutPanel ("able","baker","charlie"); 
mydocklayoutpanel.addWidget(new BrowserPanel()); 
RootPanel.get().add(mydocklayoutpanel); 
} 

}

В MyDockLayoutPanel.ui.xml изменить FlowPanel

<g:center> 
<g:FlowPanel styleName="{style.centerPanel}" ui:field="browser"> 
    </g:FlowPanel> 
</g:center> 

в MyDockLayoutPanel.java добавить:

@UiField FlowPanel browser;  
    ...  
    public void addWidget(Widget widget){ 
    browser.add(widget); 
    } 
+0

Thx для приятного гида! Я только что изменил RootPanel.get() ... на RootLayoutPanel.get() ... и это сработало. –

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