我有一个TableViewer,并喜欢有一个列上的图形。我该怎么做呢?
不起作用的是:
我用画布、代码片段尝试了TableEditor:
MyCanvas canvas = new MyCanvas (tableViewer.getTable(), SWT.NONE, (MyClass)item.getData());MyCanvas有一个PaintListener来做绘图工作。
它可以在表格单元格上绘制,但当过滤tableViewer时,图形列-仅此列-保持未过滤状态:假设表格有100行,过滤器匹配80行,结果是包含数据的80行,但包含画布的100行,也就是只显示画布的20行。
我认为问题来自于桌面上的TableEditor,而不是TableViewer。我发现有TableViewer.setCellEditors(),但我不知道如何使用它来写入单元格(列)的画布。
也许甚至还有另一种可能,不使用编辑器来获得一个的画布(已过滤!)表格单元格。非常感谢您的任何解决方案提示。
发布于 2017-05-09 13:34:07
根据greg449的提示,解决方案是:
TableViewerColumn tvc = new TableViewerColumn(tableViewer, SWT.NONE);
tvc.getColumn().setText("Headline");
tvc.getColumn().setWidth(200);
tvc.setLabelProvider(new ProjectBarDrawer());
...
class ProjectBarDrawer extends OwnerDrawLabelProvider {
@Override
protected void paint(Event event, Object element) {
// do the painting on event.gc here
}
}https://stackoverflow.com/questions/43842196
复制相似问题