Версия 1.5.5
Здравствуйте. у меня есть такой способ генерации таблицы.
private void createTable() {
Table<KeyValueEntity> tab = uiComponents.create(Table.class);
KeyValueCollectionContainer keyValueCollectionContainer = dataComponents.createKeyValueCollectionContainer();
keyValueCollectionContainer.setIdName("tableDc");
initializeColumns(tab, keyValueCollectionContainer);
List<KeyValueEntity> list = creatingTableData();
keyValueCollectionContainer.setItems(list);
tab.setItems(new ContainerTableItems<>(keyValueCollectionContainer));
tab.setWidthFull();
tab.setColumnHeaderVisible(false);
table.add(tab);
}
private void initializeColumns(Table<KeyValueEntity> tab, KeyValueCollectionContainer keyValueCollectionContainer) {
keyValueCollectionContainer.addProperty(PARAMETER, String.class);
tab.addColumn(Objects.requireNonNull(keyValueCollectionContainer.getEntityMetaClass().getPropertyPath(PARAMETER)))
.setCaption(messages.getMessage("technologicalParameters.parameter"));
for (Block block : blockList) {
String blockColumn = BLOCK + block.getBlockNumber();
keyValueCollectionContainer.addProperty(blockColumn, String.class);
tab.addColumn(Objects.requireNonNull(keyValueCollectionContainer.getEntityMetaClass().getPropertyPath(blockColumn)))
.setCaption(messages.getMessage("technologicalParameters." + blockColumn));
}
}
private List<KeyValueEntity> creatingTableData() {
Map<String, KeyValueEntity> entityMap = new HashMap<>();
for (Block block : blockList) {
int i = 0;
for (KFB kfb : block.getKfb()) {
String parameterName = kfb.getName();
KeyValueEntity entity = entityMap.computeIfAbsent(parameterName, key -> {
KeyValueEntity newEntity = dataManager.create(KeyValueEntity.class);
newEntity.setValue(PARAMETER, key);
return newEntity;
});
for (Block block1 : blockList) {
if (i < block1.getKfb().size()) {
entity.setValue(BLOCK + block1.getBlockNumber(), block1.getKfb().get(i).getState().name());
}
}
i++;
}
}
return new ArrayList<>(entityMap.values());
}
в этом цикле добавляю значения для заполнения таблицы
for (Block block1 : blockList) {
if (i < block1.getKfb().size()) {
entity.setValue(BLOCK + block1.getBlockNumber(), block1.getKfb().get(i).getState().name());
}
}
Как сделать так чтобы вместо значений (у меня их может быть 3 варианта), подставлялись соответствующие иконки и отображались в таблице вместо текста.
Пример как хотелось бы чтобы выглядело