Соотношение компонентов Vaadin GrdiLayout

Я использую свой собственный открытый класс Vaadin. PersonForm расширяет GridLayout {...} макетом конструктора super (2,4). Я до сих пор не могу понять, как сделать textArea для этих двух столбцов и кнопок?

введите описание изображения здесь

2 ответа

Вы не можете указать, что компонент будет принимать два столбца при добавлении, но вы можете использовать перегруженный addComponent метод, который принимает четыре индекса, определяющих прямоугольник:

//add textArea to first and second columns in the fourth row
//indexes are zero-based
layout.addComponent(textArea, 0, 3, 1, 3);

Этот подход требует, чтобы вы точно знали, где (в какой строке) будет расположен компонент (что может оказаться немного сложным в некоторых сценариях), поскольку добавить его " в следующей свободной строке " невозможно. Для более общего подхода вы можете вместо этого использовать некоторые надстройки, такие как Flex Layout или Responsive Layout, или написать некоторую логику GridLayout,

В одном из моих проектов я использовал этот метод для добавления компонента, который охватывает два столбца в сетке с двумя столбцами.

public void addRowToGrid(Component component)
    {
        int rows = gLayout.getRows();
        gLayout.insertRow(rows);
        gLayout.addComponent(component, 0, rows, 1, rows);
    }

Когда я создаю сетку, я просто использую:

private GridLayout gLayout = new GridLayout(2,1);

Затем каждый раз, когда вы добавляете больше компонентов, он будет добавлять строки по мере необходимости.

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