如何强制小部件重绘自己

时间:2016-09-22 15:36:22

标签: gwt

我刚刚开始使用gwt,我正在尝试解决以下任务: 我有两个课程,分别是月份和年份。在我的实现课中我有

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?和其他一些地方。

1 个答案:

答案 0 :(得分:2)

如果您的类中的某个字段(如果是JS对象将转换为属性),您将更改该值,而不是将组件交换到DOM中。

您需要将新值替换为DOM中的旧值。你这样做的方式很大程度上取决于你的ui.xml。一种可能性是在ui.xml中使用SimplePanel,并使用setWidget设置要显示的相应小部件。