2013-03-21 65 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; 
} 

無論如何,您無法更改小部件的結構。你必須遵守其定義。

相關問題