要让你的小部件在 Uibinder 中可用,它必须至少实现 IsWidget 接口。作为一个小部件,它当然已经实现了 IsWidget。
因此,任何非小部件也可以通过实现 IsWidget 来用作 uibinder 中的子小部件元素。
IsWidget 接口需要非小部件来实现方法asWidget()。因此,这样的非小部件必须充当小部件容器。
实现 IsWidget 将只允许将类用作子小部件元素。
假设你的班级是
com.zzz.client.ui.HelloKitty
为了能够拥有子小部件元素,它必须实现HasWidgets。
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:z='urn:import:com.zzz.client.ui'>
<g:VerticalPanel>
<z:HelloKitty>
<g:button ..../>
<g:textbox>asdf</g:textbox>
</z:HelloKitty>
<g:VerticalPanel>
</ui:UiBinder>
或者,它也可以只实现 HasOneWidget。
为了让类在它的 uibinder 标签之间有文本,它必须实现 HasText。
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:z='urn:import:com.zzz.client.ui'>
<g:VerticalPanel>
<z:HelloKitty>qwerty</z:HelloKitty>
<g:VerticalPanel>
</ui:UiBinder>
为了在其标签之间接受有效的 HTML,我相信你应该让它实现 HasHTML。