Используя менеджеров по размещению сетки

Примечание

Менеджеры по размещению сетки только для приложений, созданных с помощью функции uifigure.

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

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

Чтобы сконфигурировать строки и столбцы, задайте свойства RowHeight и ColumnWidth сетки. Задайте значение каждого свойства как массив ячеек. Длина массива ячеек управляет количеством строк или столбцов. Например, чтобы создать сетку, которая имеет три строки, задайте свойство RowHeight как 1 3 массив ячеек. Значения в каждом массиве ячеек управляют размером каждой строки или столбца.

Существует два типа размеров:

  • Фиксированный размер в пикселях — Задает номер. Размер строки или столбца фиксируется в количестве пикселей, которые вы задаете. Когда родительский контейнер изменяет размер, размер не изменяется.

  • Переменный размер — Задает номер, соединенный с символом 'x' (например, '1x'). Когда родительский контейнер изменяет размер, строка или столбец растут или уменьшаются. Строки и столбцы переменного размера заполняют остающееся пространство, которое не используют фиксированные строки или столбцы. Номер, который вы соединяете с символом 'x', является весом для деления остающегося пространства среди всех строк переменного размера или столбцов.

Например, этот код создает 2 3 сетка. Первая строка фиксируется в 25 пикселях высотой, в то время как вторая строка имеет переменную высоту. Первые два столбца 100 пикселей шириной, и последний столбец имеет переменную ширину.

f = uifigure;
g = uigridlayout(f);
g.RowHeight = {25,'1x'};
g.ColumnWidth = {100,100,'1x'};

Сетка невидима, но это изображение включает строки, чтобы проиллюстрировать, как пробел распределяется.

Чтобы поместить компонент в определенную строку и столбец сетки, вы должны:

  • Задайте сетку как родительский элемент компонента.

  • Задайте целевую строку и столбец путем установки свойства Layout компонента.

Например, этот код создает сетку, которая имеет размер по умолчанию (две строки '1x' и два столбца '1x'). Затем это помещает поле списка в первую строку и второй столбец той сетки.

g = uigridlayout;
list = uilistbox(g);
list.Layout.Row = 1;
list.Layout.Column = 2;

Снова, линии сетки в этом изображении не появляются в фигуре.

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

f = uifigure;
g = uigridlayout(f);
g.RowHeight = {25,'1x'};
g.ColumnWidth = {100,'1x'};
b = uibutton(g,'Text','Open File');
dd = uidropdown(g,'Items',{'Scatter Plot','Line Plot'});
list = uilistbox(g,'Items',{'one','two'});
ax = uiaxes(g);

Если вы реконфигурировали сетку после того, как добавляющие компоненты к ней, сетка не перераспределит компоненты. Например, если вы добавляете третий столбец в предыдущем примере, сетка не переключает поле списка назад к третьему столбцу первой строки.

g.ColumnWidth = {100,'1x','1x'};

Некоторые изменения, которые вы вносите в размещении, могут изменить размер сетки. Например, добавление компонента к полностью заполненной сетке добавляет строку, чтобы разместить новый компонент.

Чтобы просмотреть список объектов компонента в сетке, запросите свойство Children сетки. Изменение порядка в списке не изменяет размещение в сетке.

Пример: скройте строки на основе условий во время выполнения

Этот пример показывает, как скрыть компоненты в строке сетки на основе на выборе пользователя в выпадающем меню. Код выполняет эти высокоуровневые задачи:

  • Создает grid1, 1 2 сетка в фигуре, которая управляет панелью и компонентом осей.

  • Создает grid2, 3 2 сетка в панели. Эта сетка управляет размещением выпадающего меню, двух счетчиков и их меток.

  • Создает функцию обратного вызова под названием findMethodSelected для выпадающего меню. Когда значение выпадающих изменений меню в 'Quartiles', коллбэк скрывает компоненты во второй строке grid2 установкой grid.RowHeight{2} к 0.

Создайте программный файл под названием showhide.m. Затем вставьте этот код в файл и запустите его.

function showhide
    
    f = uifigure('Name','Statistical Analysis');
    
    % Create grid1 in the figure
    grid1 = uigridlayout(f);
    grid1.RowHeight = {'1x'};
    grid1.ColumnWidth= {220,'1x'};
    
    % Add a panel and axes
    p = uipanel(grid1);
    ax = uiaxes(grid1);

    % Create grid2 in the panel
    grid2 = uigridlayout(p);
    grid2.RowHeight = {22, 22, 22};
    grid2.ColumnWidth = {80,'1x'};

    % Add method label and drop-down
    findMethodLabel = uilabel(grid2,'Text','Find Method:');
    findMethod = uidropdown(grid2,'Items',{'Moving median','Quartiles'});
    findMethod.ValueChangedFcn = @findMethodSelected;

    % Add window size label and spinner
    winSizeLabel = uilabel(grid2,'Text','Window Size:');
    winSize = uispinner(grid2,'Value',0);

    % Add threshold label and spinner
    thresLabel = uilabel(grid2,'Text','Threshold:');
    thres = uispinner(grid2,'Value',3);

        function findMethodSelected(src,~)
            method = src.Value;

            switch method
            case 'Quartiles'
                % Collapse the second row (hides winSize spinner)
                grid2.RowHeight{2} = 0;
            case 'Moving median'
                % Expand the second row
                grid2.RowHeight{2} = 22;
            end 
        end
end

Когда вы устанавливаете Find Method на Quartiles в приложении, метка Window Size и счетчик рядом с нею становятся скрытыми.

Смотрите также

|