gpt4 book ai didi

java - NatTable 单元格中的图标

转载 作者:行者123 更新时间:2023-12-02 03:39:28 25 4
gpt4 key购买 nike

我正在用 NatTable 替换 JFace TableViewer。在我使用 TableViewer 的实现中,我在单元格中有图像,并且我有 ILabelProvider 的实现,它知道如何在运行时获取对象的具体状态的图像。因此,我从 ColumnLabelProvider 调用 ILabelProvider.getImage(element)

在 NatTable 中,我知道如何通过针对 configLabel 注册字符串 configAttribute 添加图像。对于 configAttribute 我应该明确告诉要使用什么图像。当然,我可以为每个状态创建标签,为每个标签注册图像并使用 ConfigLabelAccumulator 将它们连接在一起。但图像量相当大,而且我不想重复这个逻辑。那么对于这种情况有没有更合适的方法呢?只是委托(delegate)给现有的ILabelProvider

最佳答案

如果您有相当多的动态来检索图像,则标签解决方案是不够的(例如,当考虑每行对象具有不同图像的商店系统时)。在这种情况下,您通常会实现自定义 ImagePainter 并实现确定要在 getImage() 方法中使用的 Image 的代码。

以下代码片段可用作起点,您只需实现自定义逻辑即可确定要使用的Image。这样你只需要注册一个ImagePainter。在 NatTable 中,这也适用于一些静态图像,例如 TreeImagePainter

public class ContentDependentImagePainter<T> extends ImagePainter {

IRowDataProvider<T> dataProvider;

public ContentDependentImagePainter(IRowDataProvider<T> dataProvider) {
this.dataProvider = dataProvider;
}

@Override
protected Image getImage(ILayerCell cell, IConfigRegistry configRegistry) {
// get the row object
T rowObject = dataProvider.getRowObject(cell.getRowIndex());
Image result = null;

// perform your custom logic to determine the Image

return result;
}
}

关于java - NatTable 单元格中的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37009331/

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