簡體   English   中英

如何在SWT TableViewer中裝飾列圖像和文本?

[英]How can I decorate column images and text in an SWT TableViewer?

我有一個用JFace TableViewer包裝的SWT表。

我的要求是:

  1. 使用在工作台裝飾器管理器中定義的裝飾器裝飾列圖像
  2. 用不同的顏色裝飾列的文本

通過擴展DecoratingLabelProvider並實現ITableLabelProvider我能夠排名第一。 我將它傳遞給了我原來的TableLabelProvider和工作台裝飾器管理器,並且得到了帶有裝飾器的圖標。

然后我開始研究#2。 我在這里問了這個問題,並被告知IStyleLabelProvider (我試圖用於彩色文本的內容)與ITableLabelProvider不兼容。 所以我切換到使用ColumnLabelProvider實現IStyledLabelProvider

但是,現在我被困住了。 這兩個要求似乎是互斥的。 我不能同時擴展ColumnLabelProviderDecoratingLabelProvider 當我試圖像這樣簡單地將工作台裝飾器管理器傳遞給ColumnLabelProvider ,它根本沒有裝飾圖像。 我是錯誤地傳遞了它,還是只能在DecoratingLabelProvider 我還能嘗試什么?

    public Image getColumnImage(final Object element, final int columnIndex) {
    if (columnIndex == MY_COLUMN_INDEX) {
            final MyObject myObj = (MyObject) element;
            final Image image = myObj .getImage();
            Image newImage = null;
            if(this.decorator != null) {
                newImage = this.decorator.decorateImage(image, myObj );
            }
            return newImage == null ? image : newImage;
    }
    return null;
}

您可以使用DecoratingStyledCellLabelProvider這需要一個IStyledLabelProviderILabelDecorator作為參數:

new DecoratingStyledCellLabelProvider(styledLabelProvider,
                    PlatformUI.getWorkbench().getDecoratorManager()
                            .getLabelDecorator(), null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM