2011-12-19 7 views
0

gwt(ui:binder)コードに関する助けが必要です。gwt-ui:binder:私のコードを修正してください。

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

マイui.xml: 私は私のDockLayoutPanel

私のhtmlファイルの興味深い部分の中央にdiv要素のコンテンツを追加したいと思います

<!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に追加され、反対には追加されません。ですから、実際に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)); 
    } 
}  

エントリポイント

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でMyDockLayoutPanel.javaにFlowPanel

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

を変更、追加:

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

素晴らしいガイドのためのThx!私はRootPanel.get()をRootLayoutPanel.get()に変更しました。 –

関連する問題