如何观察griffon中glazedlists的变化?

How to observe changes in glazedlists in griffon?

我有一个带有 glazedlist 的 griffon 1.5 应用程序,我试图从中观察变化并将其 size() 绑定到视图中的字段..

在我的模型中我有

@Bindable timeslotPicks = 0

@Bindable
@PropertyListener (tableChanged) EventList<ProductionLineEntry> table =
        new BasicEventList<ProductionLineEntry>()  ....

.. 和

def tableChanged = {evt->
    println "table Changed ... "
    setTimeslotPicks(table.size())
}

唉,我的 tableChanged 事件没有触发。我如何才能将视图字段绑定到我的 glazedlist 的当前大小?提前致谢..

问题是您正在观察对 table 字段所做的更改,而不是您预期的 table 字段的内容。换句话说,您编写的代码(tableChanged 闭包)会在 bean.table 更新时做出反应,例如,当一个新的 EventList 分配给该字段时。

您必须编写 ListChangeListener 以使列表更改适应列表大小。

我重新调整了我的模型..

EventList<ProductionLineEntry> table =
        new BasicEventList<ProductionLineEntry>()
...

并删除了我的 tablechanged 支票..

在我的 mvcInit 控制器方法中,我添加了 ..

 // Add a listener to my list ..
    model.table.addListEventListener(
       {e-> model.timeslotPicks = model.table.size()} as ListEventListener
    )

现在效果很好..

谢谢