2013-03-21 98 views
0

我有一个按钮,它是GWT PushButton的直接后代。我想将UiBInder xml布局添加到我的按钮以简化其设计。我已经创建MyButton.ui.xml和我有MyButton以下内容:GWT:如何将UiBinder xml布局添加到我的Widget?

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

你用@UiField注释你的文件吗? – 2013-03-21 13:13:54

+0

当然可以。如果我在java类中需要它们。 – KutaBeach 2013-03-21 13:17:29

回答

0

我真的不知道,但是,可能是因为你没有实现asWidget()方法:

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

其中小部件声明:

private final Widget widget; 

和初始化你构造函数:

widget = ui.createAndBindUi(this); 

希望这有助于

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的方法来获取合适的实例来提供UiBinderGWT.create()

@UiFactory 
DialogBox thatsJustMe() { 
    // UiBinder will call this to get a PushButton instance. 
    return this; 
} 

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