我们需要可视化细胞的状态。
每个单元格代表用户的DB CRUD访问权限,因此每个单元格都有四个布尔标志,用于创建,读取,更新和删除。为了可视化,每个单元格应显示四个图像,每个图像显示该标志的状态。
我们定义了8个标签(CREATE,NO_CREATE,READ,NO_READ等)并根据底层模型添加这些标签。因此,在任何时候,每个单元格将有4个标签。我们想在每个单元格中显示4个图像,每个图像显示相应标记的状态。
根据研究和Dirk的建议,CellDecoratorPainter是首选方法。但是每个带有标签的单元格都与一个单元格画家相关联(在本例中为CellDecoratorPainter),那么我们如何使用它来渲染这些图像的组合呢?
我能想到的一种方法是,不是为READ,NO_READ等创建单独的标签,而是创建4x4x2标签,如READ_CREATE_UPDATE_DELETE,NO_READ_CREATE_UPDATE_DELETE,并将每个标签与一个单元画家装饰器相关联,以相应地绘制一系列图像。
不确定这是否是唯一可行的方法。如果你们中的任何一个遇到过这种情况,请你分享一些想法吗?
PS:这是在https://www.eclipse.org/forums/index.php/m/1782700/#msg_1782700
的Eclipse论坛上发布的答案 0 :(得分:1)
建议我们使用自定义图片画家来实现此目标,如https://www.eclipse.org/forums/index.php/m/1782739/#msg_1782739所述。
回复片段
您可以实现检查单元格的自定义ImagePainter 标签并根据标签堆栈中的标签绘制图像。要么 堆叠CellPainterDecorators,以便每个装饰器都有一个图像 仅在细胞标签的情况下涂上的装饰,并且具有 另一位装饰师作为基础画家。
但老实说,编写一个自定义ImagePainter来检查标签并在标签出现时绘制图像似乎更多 直观。
我们实现了CombinedImagePainter来实现这一目标,如果您有兴趣,可以在https://gist.github.com/brsanthu/cd2f91da7777aa994e011f7acedd900a获得。
答案 1 :(得分:0)
我们有类似的要求,其中图像将在开始和结束时显示。几乎就是你展示的方式,我们扩展了AbstractTextPainter类并根据它编写了实现。