在ListViewer上没有调用labelprovider getImage

时间:2011-06-15 09:27:53

标签: swt jface

我有一个带有自定义LabelProvider的ListViewer。 getText部分工作正常,但LabelProvider的getImage方法永远不会被调用。

我也尝试过使用DecorativeLabelProvider,但这也不起作用。

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不支持图像? 感谢

2 个答案:

答案 0 :(得分:3)

我发现在ListViewers上,getImage真的不会被调用。

相反,我使用了一个带有单列的TableViewer。此外,DecoratingLableProvider也可以工作,因此我可以根据对象状态设置图像。

答案 1 :(得分:3)

在类ListViewer的JFace源标头注释中,您发现ListViewer是

  

基于SWT List控件的具体查看器。

  

请注意,SWT List控件仅支持显示字符串,不是图标。如果您需要显示商品图标,请改用TableViewer