如何使用uibinder创建一个带有子项的gwt复合组件?

我想创建一个组件来装饰它的子节点,例如:

mycomponent.ui.xml:

   

然后其他人可以使用:

  Decorated child  

我怎样才能让孩子们进入uibinder? (或者在Java中,如果必须的话)

MyComponent实现HasWidgets接口以添加/删除子窗口小部件。

MyComponent.ui.xml看起来很简单

  

在将指定的HasWidgets指定的方法委托给FlowPanel

 public class MyComponent extends Composite implements HasWidgets { private static MyComponentUiBinder uiBinder = GWT.create(MyComponentUiBinder.class); interface MyComponentUiBinder extends UiBinder {} @UiField FlowPanel main; public MyComponent() { initWidget(uiBinder.createAndBindUi(this)); } @Override public void add(Widget w) { main.add(w); } @Override public void clear() { main.clear(); } @Override public Iterator iterator() { return main.iterator(); } @Override public boolean remove(Widget w) { return main.remove(w); } } 

调用

    

会这样工作。

使用这个XML:

  Decorated child  

将实例化MyComponent ,然后调用MyComponent.add(label) 。 您所要做的就是在类MyComponent覆盖.add(..)并应用您想要传递组件的任何样式。