我有一个带有自定义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不支持图像? 感谢
答案 0 :(得分:3)
我发现在ListViewers上,getImage真的不会被调用。
相反,我使用了一个带有单列的TableViewer。此外,DecoratingLableProvider也可以工作,因此我可以根据对象状态设置图像。
答案 1 :(得分:3)
在类ListViewer
的JFace源标头注释中,您发现ListViewer是
基于SWT
List
控件的具体查看器。
和
请注意,SWT
List
控件仅支持显示字符串,不是图标。如果您需要显示商品图标,请改用TableViewer
。