2011-06-15 54 views
3

我有一個帶有自定義LabelProvider的ListViewer。 getText部分工作正常,但LabelProvider的getImage方法永遠不會被調用。labelprovider getImage不在ListViewer上調用

我也嘗試過使用DecoratedLabelProvider,但是這也不起作用。

class RadioLabelProvider extends LabelProvider{ 

    Display d; 
    public RadioLabelProvider(Display d) 
    { 
     this.d = d; 
    } 

    @Override 
    public Image getImage(Object element) 
    { 
     Image image = d.getSystemImage(SWT.ICON_INFORMATION); 
     return image; 
    } 

    @Override 
    public String getText(Object element) 
    { 
     RadioElement re = (RadioElement) element; 
     return re.getIP(); 
    } 
} 

用法:

availableDevicesList = new ListViewer(this, SWT.SINGLE | SWT.BORDER); 
availableDevicesList.setContentProvider(new ArrayContentProvider()); 
availableDevicesList.setLabelProvider(new RadioLabelProvider(getDisplay())); 
availableDevicesList.setInput(devices); 

我在做什麼錯?或者ListViewer不支持圖像? 謝謝

回答

3

我發現在ListViewers getImage真的不會被調用。

相反,我使用一個TableViewer與單個列。此外,DecoratingLableProvider的作品,所以我可以根據對象狀態設置圖像。

2

在類的JFace的源頭註釋ListViewer您發現ListViewer是

基於一個SWT List控制一個具體的觀衆。

注意,SWT List控制只支持串的顯示,圖標。如果需要顯示項目的圖標,請改用TableViewer

相關問題