如何强制小部件重绘自己
How to force widget to redraw himself
我刚开始使用 gwt,我正在尝试解决以下任务:
我有两个 classes Month 和 Year 扩展复合。在我的实现中 class 我有
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? 和其他一些地方。
如果 class 中的一个字段(如果是 JS 对象,它将转换为 属性),你正在更改值,你没有将组件交换到 DOM.
您需要用新值代替 DOM 中的旧值。不过,您执行此操作的方式在很大程度上取决于您的 ui.xml。一种可能性是在 ui.xml 中使用 SimplePanel 并使用 setWidget 设置要显示的适当小部件。
我刚开始使用 gwt,我正在尝试解决以下任务: 我有两个 classes Month 和 Year 扩展复合。在我的实现中 class 我有
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? 和其他一些地方。
如果 class 中的一个字段(如果是 JS 对象,它将转换为 属性),你正在更改值,你没有将组件交换到 DOM.
您需要用新值代替 DOM 中的旧值。不过,您执行此操作的方式在很大程度上取决于您的 ui.xml。一种可能性是在 ui.xml 中使用 SimplePanel 并使用 setWidget 设置要显示的适当小部件。