2016-09-22 38 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