gpt4 book ai didi

java - 如何在 SWT TableViewer 中装饰列图像和文本?

转载 作者:行者123 更新时间:2023-12-02 04:34:38 25 4
gpt4 key购买 nike

我有一个用 JFace TableViewer 包装的 SWT 表。

我的要求是:

  1. 使用工作台装饰器管理器中定义的装饰器来装饰列图像
  2. 用不同的颜色装饰列的文本

我通过扩展 DecoratingLabelProvider 和实现 ITableLabelProvider 实现了#1。我向它传递了我原来的 TableLabelProvider 和工作台装饰器管理器,并且我得到了带有装饰器的图标。

然后我开始研究#2。我在这里问了这个问题,并被告知 IStyleLabelProvider (我试图用于彩色文本的内容)与 ITableLabelProvider 不兼容。因此,我转而使用实现 IStyledLabelProviderColumnLabelProvider

但是,现在我陷入困境了。这两个要求似乎是相互排斥的。我无法同时扩展 ColumnLabelProviderDecoratingLabelProvider。当我尝试像这样简单地将工作台装饰器管理器传递给 ColumnLabelProvider 时,但它根本没有装饰图像。我是否传递了错误的信息,还是只能在 DecoratingLabelProvider 中工作?我还能尝试什么?

    public Image getColumnImage(final Object element, final int columnIndex) {
if (columnIndex == MY_COLUMN_INDEX) {
final MyObject myObj = (MyObject) element;
final Image image = myObj .getImage();
Image newImage = null;
if(this.decorator != null) {
newImage = this.decorator.decorateImage(image, myObj );
}
return newImage == null ? image : newImage;
}
return null;
}

最佳答案

您可以使用 DecoratingStyledCellLabelProvider ,它采用 IStyledLabelProviderILabelDecorator 作为参数:

new DecoratingStyledCellLabelProvider(styledLabelProvider,
PlatformUI.getWorkbench().getDecoratorManager()
.getLabelDecorator(), null);

关于java - 如何在 SWT TableViewer 中装饰列图像和文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008292/

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