2016-04-24 9 views
1

Eclipseプラグインを開発していて、ColumnLabelProviderを使用して、ツリービューアの列のラベルを指定しています。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 */ 
      ..... 

     } 
    }); 

答えて

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

どうもありがとう、グレッグ。これは私の質問に答える。 –

関連する問題