Есть два способа сделать это.Если ваш TreeViewer отображает объекты, которые являются экземплярами EObject (сгенерированные EMF. Если вы не понимаете эту часть, перейдите к следующему абзацу :)), вы можете изменить «XyzItemProvider» этих EObject, чтобы их метод «getImage» возвращалоформленное изображение вместо "простого" изображения ... и это все для объектов EMF, больше ничего не нужно менять.
Если вы отображаете "классические" объекты Java, вам придется изменить свойLabelProvider TreeViewer для того, чтобы украсить изображение.Это делается с помощью метода TreeViewer # setLabelProvider ().
Затем вам потребуется «как украсить изображение», что делается с помощью такого кода:
public class MyLabelProvider extends DecoratingLabelProvider {
public Image getImage(Object element) {
Image image = super.getImage(element);
List<Object> images = new ArrayList<Object>(2);
images.add(image);
images.add(<Image of the decorator>);
labelImage = new ComposedImage(images); // This will put the second of the "images" list (the decorator) above the first (the element's image)
return decoratedImage;
}
[...]
}
Затем вам нужно предоставить вашему представителю дерева этот провайдер меток:
TreeViewer treeViewer = new TreeViewer(...);
treeViewer.setLabelProvider(new MyLabelProvider(new LabelProvider()); // new LabelProvider()... or your previous label provider if you have one.