这是我更新显示列表的TableViewer的方法:
public void view(MyListClass list) {
ViewerSupport.bind(
this,
new WritableList(list, controller.theClass()),
BeanProperties.values(controller.theClass(), controller.strings())
);
}
controller
是一个封装我的胶水代码的类的实例(它是两个列表的不同类;同样是controller.theClass()
)。 strings()
是一个属性名称数组。 MyListClass来自ArrayList<MyListEntryObject>
。这很好。但是,我想显示一个数据矩阵。 MyMatrixClass
是HashMap<Point, MyMatrixEntryObject>
。这就是我尝试过的:
private void view(MyMatrixClass matrix) {
columns(matrix.columns());
List<WritableList> lists = new ArrayList<WritableList>(matrix.rows());
for (MyEntityClass list : matrix.children())
if (list instanceof MyListClass)
lists.add(new WritableList((MyListClass) list, controller.theClass()));
WritableList[] alists = lists.toArray(new WritableList[0]);
MultiList mlist = new MultiList(alists);
ViewerSupport.bind(
this,
mlist,
BeanProperties.value(controller.theClass(), "value")
);
}
这不起作用。我得到null参数弹出错误。 (每个数据模型类都实现MyEntityClass
。类名已被更改,因为这是我正在开发的专有程序。)
长话短说,如何使用ViewerSupport
和BeanProperties
在TableViewer
中显示数据矩阵?
答案 0 :(得分:1)
由于JFace表查看器是基于行的,因此您必须以基于行的方式提供矩阵。您必须创建矩阵行的集合,然后将此列表设置为查看器的输入。之后,您可以创建BeanProperties,显示所选行的列。