gpt4 book ai didi

java - TreeViewer 中的项目装饰

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:11 24 4
gpt4 key购买 nike

我有以下问题:我正在 Eclipse 中准备一个编辑器,其中一个选项卡包含 TreeViewer 以显示树中的项目。每个项目都有一个名称和一个可编辑的值。我需要向用户指出值不正确(例如超出给定范围)的问题。我的想法是用警告或错误图标装饰不正确的单元格,这些图标也会在编辑完成后显示。

有人知道如何装饰树中的项目吗?我正在尝试使用 ControlDecoration 类但没有成功。

提前致谢

马辛

附言。我仅限于 Eclipse 3.4

最佳答案

有两种方法可以做到这一点。如果您的 TreeViewer 显示的对象是 EObject 的实例(由 EMF 生成。如果您不理解这部分,请跳到下一段 :)),您可以更改这些 EObject 的“XyzItemProvider”,以便它们的“getImage”方法返回一个装饰图像而不是“普通”图像...这就是 EMF 对象,不需要更改任何其他内容。

如果要显示“经典”Java 对象,则必须更改 TreeViewer 的 LabelProvider 以装饰图像。这是通过 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.

关于java - TreeViewer 中的项目装饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com