Ширина и высота сетки Vaadin не задаются динамически в соответствии с данными

Я пытаюсь отобразить список элементов внутри компонента сетки фреймворка Vaadin. По умолчанию размер сетки очень маленький. Он не показывает все имена столбцов. Мне нужно прокрутить, чтобы увидеть все столбцы. В моей сетке всего 10 столбцов. Он не меняется согласно данным в списке.

Я пытался установить размер сетки следующими способами:

this.grid.setHeightByRows(list.size());
this.grid.setSizeUndefined();
this.grid.setSizeFull();

Ничто из вышеперечисленного не может установить размер в соответствии с данными

private Grid<PrevYearConsumption> createGridTable() {

        Grid<PrevYearConsumption> grid = new Grid<PrevYearConsumption>();
        grid.addColumn(PrevYearConsumption::getPreviousPeriod).setCaption(PrevYearConstants.PREVIOUS_PERIOD);
        grid.addColumn(PrevYearConsumption::getPresentReading).setCaption("Prev Elec");
        grid.addColumn(PrevYearConsumption::getPreviousDataComplete)
                .setCaption(PrevYearConstants.PREVIOUS_DATA_COMPLETE);
        grid.addColumn(PrevYearConsumption::getPreviousDq).setCaption(PrevYearConstants.PREVIOUS_DQ);
        grid.addColumn(PrevYearConsumption::getPresentPeriod).setCaption(PrevYearConstants.PRESENT_PERIOD);
        grid.addColumn(PrevYearConsumption::getPresentReading).setCaption("Present Elec");
        grid.addColumn(PrevYearConsumption::getPresentDataComplete).setCaption(PrevYearConstants.PRESENT_DATA_COMPLETE);
        grid.addColumn(PrevYearConsumption::getPresentDq).setCaption(PrevYearConstants.PRESENT_DQ);
        grid.addColumn(PrevYearConsumption::getDiff).setCaption(PrevYearConstants.DIFFERENCE);
        grid.addColumn(PrevYearConsumption::getPercentageChange).setCaption(PrevYearConstants.PERCENTAGE);
        grid.setSizeUndefined();
        return grid;
    }

Внутри класса View

public class viewClass {
    private HorizontalLayout tableLayout = new HorizontalLayout();

    public void method ()
    {
        this.grid = createGridTable();
        this.tableLayout.setSizeFull();
        this.tableLayout.addComponent(this.grid);
        List<PrevYearConsumption> list = getList();
        this.grid.setItems(list);
    }

}

person Ashish Ranjan    schedule 08.10.2019    source источник
comment
Не могли бы вы приложить скриншот? Достаточно ли места на экране для отображения всех столбцов?   -  person anasmi    schedule 08.10.2019
comment
Я не решаюсь верить любому коду в вашем viewClass. Он не расширяет компонент (для потока vaadin), не расширяет пользовательский интерфейс (для vaadin ‹10), нет конструктора, и вы не добавляете определенные компоненты. Очень сложно найти проблему, когда вы не показываете настоящий код   -  person kscherrer    schedule 08.10.2019
comment
Я имел в виду implements View, а не extends UI для vaadin ‹10. В любом случае, я предполагаю, что вы используете Vaadin 8, потому что вы используете tableLayout.addComponent(..). Я считаю, что знаю, в чем проблема, но это предположение предполагает некоторые вещи в вашем классе просмотра, которые не видны в вашем коде viewClass. Обновите свой вопрос, чтобы показать вашу фактическую реализацию viewClass или, по крайней мере, конструктор и все implements и extends класса.   -  person kscherrer    schedule 08.10.2019
comment
@KasparScherrer Я использую Vaadin 8. В нашем проекте есть уровень настраиваемой абстракции для разработки пользовательского интерфейса, который мы расширяем для наших классов представлений. Я проверил иерархию и обнаружил, что расширенный класс Vaadin - это CustomComponent.   -  person Ashish Ranjan    schedule 09.10.2019


Ответы (1)


Вы можете попробовать это:

this.tableLayout.setSizeUndefined();
person Vikrant Thakur    schedule 11.10.2019