0

我有一个按钮,它是 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 文件中创建的布局没有应用。我哪里出错了?

4

2 回答 2

0

我不太确定,但是,可能是因为您没有实现 asWidget() 方法:

@Override
public Widget asWidget() {
    return widget;
}

声明小部件的位置:

private final Widget widget;

并在您的构造函数中初始化为:

widget = ui.createAndBindUi(this);

希望这可以帮助

于 2013-03-21T13:23:46.590 回答
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;
}

无论如何,您无法更改小部件的结构。你必须遵守它的定义。

于 2013-03-21T23:48:47.430 回答