无法在OwnerDrawLabelProvider中绘制Composite

时间:2010-02-20 23:39:06

标签: java swt eclipse-rcp jface

我有一个TableViewer窗口小部件,其中包含一个列,其中表格内容中的每一行都是Composite,其中包含多个子窗口小部件。该列有一个标签提供程序,它是OwnerDrawLabelProvider的子类。标签提供程序应该在表格单元格中呈现Composite子项,但是在调用paint()时,不会呈现任何内容。

我找到了一些关于如何使用传入的GC对象中的Event绘制普通或样式文本项或基元的示例,但没有绘制{Composite内容的任何内容1}}在单元格的区域。

这是可能的,如果是的话,我做错了什么?

以下是创建表格的代码:

    viewer = new TableViewer(container, SWT.NONE);
    final Table table = viewer.getTable();

    TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.LEFT);
    TableColumn tableColumn = viewerColumn.getColumn();
    tableColumn.setText(Messages.getString("column.header.name"));
    tableColumn.setResizable(true);
    tableColumn.setMoveable(false);
    tableColumn.setWidth(500);
    viewerColumn.setLabelProvider(new CompositeLabelProvider());

以下是自定义标签提供商measure的{​​{1}}和paint方法:

CompositeLabelProvider

1 个答案:

答案 0 :(得分:2)

我认为如果您想使用GC绘制自己的组件,则可以使用OwnerDrawLabelProvider。如果您只想在表中呈现正常的SWT窗口小部件,则应该使用TableEditor和#setEditor(Control)来设置要在表格单元格中显示的控件。