【发布时间】:2012-08-26 17:50:20
【问题描述】:
我正在研究 JFace 进行 Eclipse 开发。我制作了一个插件来充当ComboViewer 的虚拟 内容提供者。此提供程序本质上将数据模型提供为硬编码值的ArrayList。无论如何,我试图理解这种方法。
我通过comboViewer.setInput(list) 方法在ComboViewer 上设置模型。
在按下按钮时,我调用另一个对象的方法,将我作为input 传递的list 更新为ComboViewer(添加另一个元素),我调用comboViewer.refresh 以反映更改,但没有任何反应。
结果:
我需要调用comboViewer.setInput(list) 更新列表来查看我的 UI 组合中数据的变化(即之前的添加)。我发现comboViewer.refresh 仅在我获得comboViewer 作为输入Object 传递并对其进行修改时才反映任何更新。 IE。如果我这样做:
List<SomeObject> data = ((List<SomeObject>)(comboViewer.getInput()));
data.add(new SomeObject("aaa","cccc"));
comboViewer.refresh();
只有这样才能刷新数据。但我不明白使用这些 API 的正确方法是什么。
我是否应该获得保留并修改我在setInput 方法中传递的对象?感觉我不应该这样做。那么refresh的目的是什么?
更新提供给Viewers 的数据的正确方法是什么?
【问题讨论】:
-
这是什么
list?没有setInput,所有更新都很好。 -
list是具有硬编码值的自定义对象列表,这些值用作comboViewer的数据。不确定您的意思All are updates fine without setInput. -
好的,我会给你一些工作代码。
标签: java eclipse swt rcp jface