Eclipse插件 - ColumnLabelProvider仅显示图像

时间:2016-04-24 07:40:20

标签: eclipse-plugin eclipse-rcp

所以我正在开发一个Eclipse插件,并使用ColumnLabelProvider为我的树查看器的列提供标签。

但是,在其中一列中,我只打算显示图像而不显示文本。但是,在最终显示中,即使我返回null,Eclipse也会为文本元素保留空白区域。

有没有办法让它只显示图像和提供的完整空间?

以下是代码段:

column4.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return null;    
        }

        @Override
        public Image getImage(Object element) {
            /* Code to Display an image follows */
            ..... 

        }
    });

1 个答案:

答案 0 :(得分:2)

ColumnLabelProvider将始终为文字留出空间。

您可以使用从OwnerDrawLabelProvider派生的类来自行绘制列。

类似的东西:

public abstract class CentredImageCellLabelProvider extends OwnerDrawLabelProvider
{
  protected CentredImageCellLabelProvider()
  {
  }

  @Override
  protected void measure(Event event, Object element)
  {
  }

  @Override
  protected void erase(final Event event, final Object element)
  {
    // Don't call super.erase() to suppress non-standard selection draw
  }

  @Override
  protected void paint(final Event event, final Object element)
  {
    TableItem item = (TableItem)event.item;

    Rectangle itemBounds = item.getBounds(event.index);

    GC gc = event.gc;

    Image image = getImage(element);

    Rectangle imageBounds = image.getBounds();

    int x = event.x + Math.max(0, (itemBounds.width - imageBounds.width) / 2);
    int y = event.y + Math.max(0, (itemBounds.height - imageBounds.height) / 2);

    gc.drawImage(image, x, y);
  }

  protected abstract Image getImage(Object element);
}