如何使用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(..)
并应用您想要传递组件的任何样式。