我有一个按钮,它是GWT PushButton
的直接后代。我想将UiBInder xml布局添加到我的按钮以简化其设计。我创建了MyButton.ui.xml
,我有MyButton
的以下内容:
class MyButton extends PushButton
{
interface UI extends UiBinder<Widget, MyButton>
{
}
private static final UI ui = GWT.create(UI.class);
@UiConstructor
public MyButton() {
super();
ui.createAndBindUi(this);
}
(...)
}
问题是我的按钮没有渲染。 GWT创建了一些div并在其中放置了输入元素,但是我在uibinder xml文件中创建的布局未应用。哪里出错了?
答案 0 :(得分:0)
我不太确定,但是,可能是因为你没有实现asWidget()方法:
@Override
public Widget asWidget() {
return widget;
}
声明小部件:
private final Widget widget;
并在构造函数中初始化为:
widget = ui.createAndBindUi(this);
希望这有帮助
答案 1 :(得分:0)
要直接回答您的问题,xml必须看起来像(进行必要的调整):
<ui:image field='downButton'/>
<g:PushButton ui:field='pushButton' enabled='true'>
<g:upFace>
<b>click me</b>
</gwt:upFace>
<g:upHoveringFace>
<b>Click ME!</b>
</gwt:upHoveringFace>
<g:downFace image='{downButton}'/>
<g:downHoveringFace image='{downButton}'/>
</g:PushButton>
有关语法,请参阅http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/CustomButton.html。
然后,在您的MyButton
中,您应该使用标有@UiFactory
的方法,以便获取正确的实例以提供UiBinder
GWT.create()
。
@UiFactory
DialogBox thatsJustMe() {
// UiBinder will call this to get a PushButton instance.
return this;
}
无论如何,您无法更改窗口小部件的结构。你必须遵守它的定义。