setColumnWidth(), похоже, не работает

#java #vaadin #column-width

#java #vaadin #ширина столбца

Вопрос:

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

Я использую обычный подход:

 simCardTable.setColumnWidth(actionColumn, 135);
  

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

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

Любая помощь была бы очень признательна!

Комментарии:

1. @SamCasil нет, у меня не было. На самом деле не видел смысла, поскольку не было никакого ответа вообще на значения, которые должны были оказать влияние. Попробовал сейчас просто для удовольствия, и, как и предсказывалось, это не имеет никакого значения

Ответ №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;
                }
            };
  

Комментарии:

1. хммм … интересная идея! Я попробую это, когда вернусь к работе завтра! =)

2. Что я сделал, так это то, что я установил ширину для макета, содержащего значки, что в значительной степени делает то же самое, что вы рекомендовали! =)