Отображение изображений в ячейках NatTable

У меня есть вопрос относительно использования изображений в ячейках 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 но может быть есть другое решение?

1 ответ

Решение

Конфигурации тем предназначены для переопределения существующих стилей. Это позволяет также переключать темы во время выполнения.

IThemeExtensions - это способ расширить существующую тему с помощью условных стилей. Конечно, вы также можете создать свою собственную тему, расширив existimg, но таким образом ваша настройка не будет возобновлена ​​с другими темами.

Проблема в приведенном выше коде заключается в том, что вы регистрируете художника в целом, а не только для своей "myLabel". Это предназначено? Потому что это переопределяет стандартную конфигурацию средства рисования ячеек, которая затем снова переопределяется темой. Если он должен быть зарегистрирован только для настройки "myLabel", тема не должна иметь эффекта.

Другие вопросы по тегам