Eclipse标签装饰器无法绘制图像

时间:2015-03-19 23:08:15

标签: eclipse-rcp jface

我试图创建一个标签装饰器,在我的文件图标的左上角添加一个图标。我看到小红色的X可以从图标的边缘拉出来,但是我的辐射符号在边缘被切掉了。

enter image description here

@Override
public Image decorateImage(Image image, Object element) {
    Image failureImg = Activator.imageDescriptorFromPlugin(IMAGE PATH).createImage();


    GC gc = new GC(image);
    gc.drawImage(failureImg, 0, 0, failureImg.getImageData().width, failureImg.getImageData().height, 
            0, 0, 11, 11);
    gc.dispose();

    return image;
}

关于如何在文件图标的边界之外绘制的任何想法?

1 个答案:

答案 0 :(得分:1)

使用轻量级标签装饰器(实现ILightweightLabelDecorator并在扩展点中指定lightweight="true")会更容易。

然后,您可以使用以下内容添加装饰图像:

@Override
public void decorate(final Object element, final IDecoration decoration)
{
  ImageDescriptor imageDescriptor = Activator.imageDescriptorFromPlugin(IMAGE PATH);

  decoration.addOverlay(imageDescriptor, IDecoration.TOP_LEFT); 
}

由于轻量级装饰器在后台线程中运行,因此它们也使UI更具响应性。

注意:您的代码正在创建Image个对象,而不是安排它们被处置 - 这会泄漏资源句柄。轻量级装饰器没有这个问题。