2016-04-24 74 views
1

因此,我正在開發一個Eclipse插件並使用ColumnLabelProvider爲我的樹查看器的列提供標籤。Eclipse插件 - ColumnLabelProvider僅顯示圖像

但是,在其中的一列中,我只打算顯示圖像而沒有文字。但是,在最終顯示中,即使我返回空值,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 */ 
      ..... 

     } 
    }); 

回答

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); 
} 
+0

非常感謝,格雷格。這回答了我的問題。 –