Vaadin 时钟时间; } /** *@返回时间 */ 公共长getNanoTime(){ 返回此.nanoTime; } /** *@返回uuid */ 公共UUID getUuid(){ 返回此.uuid; } }
该表通过侦听器监视表项的属性。如果通过表的项实例更改项的属性,则会通知并更新表:例如Vaadin 时钟时间; } /** *@返回时间 */ 公共长getNanoTime(){ 返回此.nanoTime; } /** *@返回uuid */ 公共UUID getUuid(){ 返回此.uuid; } },vaadin,Vaadin,该表通过侦听器监视表项的属性。如果通过表的项实例更改项的属性,则会通知并更新表:例如 container.getItem(beanInstance).getItemProperty(“propertyName”).setValue(“newValue”) 但是,如果bean在item实例之外更改,则需要通知表刷新。最简单的方法(使用stock BeanContainer)是简单地删除然后添加项目 或者,我建议您最好创建一个触发ItemSetChange事件的BeanItemContainer扩展
container.getItem(beanInstance).getItemProperty(“propertyName”).setValue(“newValue”)代码>
但是,如果bean在item实例之外更改,则需要通知表刷新。最简单的方法(使用stock BeanContainer)是简单地删除然后添加项目
或者,我建议您最好创建一个触发ItemSetChange事件的BeanItemContainer扩展,该事件将导致表刷新
public class RefreshableBeanItemContainer<BEANTYPE> extends BeanItemContainer<BEANTYPE> {
public RefreshableBeanItemContainer(Collection<? extends BEANTYPE> collection) throws IllegalArgumentException {
super(collection);
}
public RefreshableBeanItemContainer(Class<? super BEANTYPE> type) throws IllegalArgumentException {
super(type);
}
public RefreshableBeanItemContainer(Class<? super BEANTYPE> type, Collection<? extends BEANTYPE> collection) throws IllegalArgumentException {
super(type, collection);
}
public void refreshItems(){
fireItemSetChange();
}
}
公共类RefreshableBeanItemContainer扩展了BeanItemContainer{
public RefreshableBeanItemContainer(Collection解决方案似乎与调用refreshRowCache()一样简单
在表上-至少对我来说!创建BeanItemContainer子类的好处是什么?我们仍然需要调用您的refreshItems
方法,所以为什么不直接调用fireItemSetChange
?无论哪种方式,我们更新数据的代码都必须进行额外的方法调用。在编写时,我肯定遗漏了什么ng,fireItemSetChange()
受到保护,因此调用该方法的唯一方法是通过子类。这可能已经改变了。@BasilBourque当前(v7.3.8),该方法受保护=>调用该方法的唯一方法是通过子类。