Canvas JFace TableViewer:在画布上书写
我有一个TableViewer,希望在一列上有一个图形。我该怎么做 不起作用的是: 我用画布尝试了TableEditor,代码片段:Canvas JFace TableViewer:在画布上书写,canvas,swt,cell,jface,tableviewer,Canvas,Swt,Cell,Jface,Tableviewer,我有一个TableViewer,希望在一列上有一个图形。我该怎么做 不起作用的是: 我用画布尝试了TableEditor,代码片段: MyCanvas canvas = new MyCanvas (tableViewer.getTable(), SWT.NONE, (MyClass)item.getData()); MyCanvas有一个PaintListener来完成绘图工作 它可以在表格单元格上绘制,但是当过滤了tableViewer时,图形列(只有这个)保持未过滤状态:假设表格有100行
MyCanvas canvas = new MyCanvas (tableViewer.getTable(), SWT.NONE, (MyClass)item.getData());
MyCanvas有一个PaintListener
来完成绘图工作
它可以在表格单元格上绘制,但是当过滤了tableViewer
时,图形列(只有这个)保持未过滤状态:假设表格有100行,过滤器匹配了80行,结果是80行数据,100行画布,20行只显示画布
我想问题在于将TableEditor放在表上而不是放在TableViewer上。我发现有TableViewer.setcelleeditors()
,但我不知道如何使用它写入单元格(列)画布
也许还有另一种可能,不使用编辑器来获取(过滤的!)表格单元格的画布。非常感谢任何解决方案提示。根据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
}
}
您可能希望使用
OwnerDrawLabelProvider
作为列标签提供程序。这可以让你自己直接画专栏。非常感谢-这就成功了!