setColumnWidth() не работает

Я разрабатываю веб-приложение в рамках Vaadin. У меня есть таблица с 14 столбцами. В последнем столбце находятся три иконки, и проблема, с которой я столкнулся, заключается в том, что, как в половине случаев, когда таблица отображается, самый дальний справа значок будет "разрезан пополам" по вертикали. Чтобы избежать этой проблемы, я попытался установить фиксированную ширину для этого столбца, что, я думаю, устранит проблему, однако, ничего не происходит..

Я использую традиционный подход:

simCardTable.setColumnWidth(actionColumn, 135);

Однако независимо от того, какое значение я установил в качестве ширины столбца, столбец остается неизменным... Кто-нибудь знает, почему это так? Это потому, что это последний столбец, который нужно добавить, и, следовательно, нет места, чтобы сэкономить..?

Кстати, это единственный столбец, для которого я установил определенную ширину, все восстанавливаемые столбцы имеют стандартную ширину, определяемую шириной заголовка столбца или содержимого ячейки.

Любая помощь будет очень ценится!

1 ответ

Решение

Как я понял из вашего вопроса ("Последний столбец содержит три иконки"), вы используете ColumnGenerator для создания этого последнего столбца с иконками. Если я прав, это означает, что вы создали какой-то собственный макет с этими значками внутри, в этом случае вам следует поработать так:

final ColumnGenerator generator = new ColumnGenerator() {
            private static final long serialVersionUID = 1L;

            @Override
            public Component generateCell(Table source, final Object itemId, Object columnId) {
                final HorizontalLayout layout = new HorizontalLayout();
                layout.setSizeFull();

                Embedded icon1 = new Embedded();
                Embedded icon2 = new Embedded();
                Embedded icon3 = new Embedded();

                //Add some themeresource to embedded components

                //Do some listners to this icons

                layout.addComponent(icon1);
                layout.addComponent(icon2);
                layout.addComponent(icon3);

                //Set column with
                setColumnWidth(columnId, 100);

                return  layout;
                }
            };
Другие вопросы по тегам