Java 在可natable单元格中显示图像

Java 在可natable单元格中显示图像,java,swt,nattable,Java,Swt,Nattable,我对在NatTable单元格中使用图像有疑问。我的ConfigLabelAccumulator和配置如下所示 public class MyConfigLabelAccumulator implements IConfigLabelAccumulator { @Override public void accumulateConfigLabels(final LabelStack configLabels, final int columnPosition, final int rowP

我对在NatTable单元格中使用图像有疑问。我的ConfigLabelAccumulator和配置如下所示

public class MyConfigLabelAccumulator implements IConfigLabelAccumulator {
  @Override
  public void accumulateConfigLabels(final LabelStack configLabels, final int columnPosition, final int rowPosition) {
    if (((rowPosition + columnPosition) % 2) == 0) {
      configLabels.addLabel("myLabel");
    }
  }
}

public class MyStyleConfiguration extends DefaultNatTableStyleConfiguration {
  @Override
  public void configureRegistry(final IConfigRegistry configRegistry) {
    super.configureRegistry(configRegistry);
    final Style style = new Style();
    style.setAttributeValue(CellStyleAttributes.IMAGE, GUIHelper.getImage("plus"));
    style.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, GUIHelper.COLOR_YELLOW);
    configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, style, DisplayMode.NORMAL, "myLabel");
    configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new CellPainterDecorator(new TextPainter(), CellEdgeEnum.RIGHT, new ImagePainter()), DisplayMode.NORMAL);
  }
}   
我是这样配置的

dataLayer.setConfigLabelAccumulator(new MyConfigLabelAccumulator());
...
natTable.addConfiguration(new MyStyleConfiguration());
...
natTable.configure();   
表看起来像预期的。我看到黄色的背景单元格和单元格中的“+”图像。但是打电话之后

natTable.setTheme(new ModernNatTableThemeConfiguration());
我只看到黄色背景,没有图像

UPD:
我已经使用IThemeExtension解决了这个问题,但可能还有其他解决方案吗?

主题配置旨在覆盖现有样式。这也允许在运行时切换主题

IThemeExtensions是使用条件样式扩展现有主题的方法。当然,您也可以通过扩展现有主题来创建自己的主题,但这样您的定制就无法与其他主题一起恢复


上面代码中的问题似乎是,您一般都在注册画家,而不仅仅是为了您的“myLabel”。这是有意的吗?因为这会覆盖默认的单元格绘制器配置,然后主题会再次覆盖该配置。如果仅为“myLabel”设置注册,则主题不应生效。

是否检查ModernAttachableThemConfiguration是否替换了您的配置MyStyleConfiguration的配置注册表?可能您想先设置主题,然后添加您的配置nattable.addConfiguration(newmystyleconfiguration())@svasa据我所知,setTheme()应该在configure()之后调用,因此如果我在setTheme()之后调用addConfiguration(),则不会有任何效果。如果您查看它,ModernAttachateThemeConfiguration实际上有自己的图像绘制程序,那么如果您使用它进行配置,据我所知,它将替换以前的mystyleconfiguration。或者定制ModernAttachableThemConfiguration。再次感谢您!我真的错过了画家的“myLabel”