2016-09-22 69 views
0

我剛剛開始與gwt合作,並且我正在嘗試解決以下任務: 我有兩個類Month和Year,它們表示複合。而在我的實現類,我有如何強制小部件重繪自己

UiField(provided = true) 
Composite composite; 

Month month; 

Year year; 
... 
//Constructor 
@Inject 
MyClassImpl(){ 
    month = new Month(); 
    year = new Year(); 
    composite = month; 
} 

updateComposite(){ 
    composite = year; 
    logger.fine("composite = " + composite); 
} 

我的問題是,當我打電話updateComposite我在控制檯上,它的更新見()方法,但它不是在屏幕上重繪。它看起來像我的問題的答案很簡單,但我沒有設法找到它。我在這裏看了How can I force GWT widget to update?和其他一些地方。

回答

2

如果您的類中的某個字段(如果JS對象將轉換爲屬性),那麼您將更改該值,但不會將這些組件交換到DOM中。

您需要將新值替換爲DOM中的舊值。儘管如此,你做這件事的方式依賴於你的ui.xml。一種可能性是在ui.xml中使用SimplePanel,並使用setWidget設置適當的窗口部件。

+0

謝謝,我查看了setWidget源代碼,發現將附件插入DOM樹是我忘記做的事情。 – Evgen