GridLayout Properties

Управление поведением менеджера размещения сетки

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

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

Сетка

расширить все

Ширина столбца, заданная как массив ячеек, содержащий 'fit', числа или числа в паре с 'x' персонажи. Можно задать любую комбинацию значений. Количество элементов в массиве ячеек контролирует количество столбцов в сетке. Для примера, чтобы создать сетку с 4 столбцами, задайте массив ячеек 1 на 4. Ширина столбца может быть задана как строковые массивы или числовой массив, только если указанные элементы имеют одинаковый тип, например ["1x" "2x" "1x"] или [100 200 50].

Существует три различных типа ширины столбцов:

  • Ширина подгонки - Задайте 'fit'. Ширина столбца автоматически подстраивается под его содержимое. Для текстовых компонентов, 'fit' ширина корректирует со свойствами шрифта, чтобы отобразить весь текст. Для нетекстовых компонентов, 'fit' ширина основана на размере по умолчанию компонента и других факторах. Использование 'fit' width, если вы хотите избежать жесткого кодирования ширины столбца для соответствия компонентам, или если ваше приложение переведено на другой язык или работает на других платформах.

  • Фиксированная ширина в пикселях - Задайте число. Ширина столбца фиксируется на заданном количестве пикселей. При изменении размера родительского контейнера ширина столбца не изменяется.

  • Ширина переменной - задайте число в паре с 'x' символ (для примера, '1x'). При изменении размера родительского контейнера ширина столбца увеличивается или уменьшается. Столбцы переменной ширины заполняют оставшееся горизонтальное пространство, которое столбцы фиксированной ширины не используют. Число, которое вы соединяете со 'x' символ является весом для деления оставшегося пространства между всеми столбцами переменной ширины. Если сетка имеет только один столбец переменной ширины, то она использует все оставшееся пространство независимо от числа. Если существует несколько столбцов переменной ширины, которые используют одно и то же число, то они разделяют пространство одинаково. В противном случае количество пространства пропорционально количеству.

Для примера, {'fit',200,'2x','1x'} указывает, что ширина первого столбца соответствует его содержимому, второй столбец фиксирован на уровне 200 пикселей, а последние два столбца имеют общее горизонтальное пространство. В третьем столбце используется в два раза больше пространство, чем в четвертом столбце.

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

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

Высота строки, заданная как массив ячеек, содержащий 'fit', числа или числа в паре с 'x' персонажи. Можно задать любую комбинацию значений. Количество элементов в массиве ячеек контролирует количество строк в сетке. Для примера, чтобы создать сетку, которая имеет 4 строки, задайте массив ячеек 1 на 4. Высота строки может быть задана как строковые массивы или числовой массив, только если указанные элементы имеют одинаковый тип, например ["1x" "2x" "1x"] или [100 200 50].

Существует три различных типа высот строк:

  • Высота подгонки - Задайте 'fit'. Высота строки автоматически настраивается в соответствии с ее содержимым. Для текстовых компонентов, 'fit' корректировки высоты со свойствами шрифта для отображения всего текста. Для нетекстовых компонентов, 'fit' высота основана на размере по умолчанию компонента и других факторах. Использование 'fit' высота, если вы хотите избежать жесткого кодирования высоты строк, чтобы соответствовать компонентам, или если ваше приложение переведено на другой язык или работает на других платформах.

  • Фиксированная высота в пикселях - Задайте число. Высота строки фиксируется на заданном количестве пикселей. При изменении размера родительского контейнера высота строки не изменяется.

  • Высота переменной - задайте число в паре с 'x' символ (для примера, '1x'). Когда размер родительского контейнера изменяется, строка увеличивается или сжимается. Строки переменной высоты заполняют оставшееся вертикальное пространство, которое не используются строки фиксированной высоты. Число, которое вы соединяете со 'x' символ является весом для деления оставшегося пространства между всеми строками переменной высоты. Если сетка имеет только одну строку переменной высоты, то она использует все оставшееся пространство независимо от числа. Если существует несколько строк переменной высоты, которые используют одно и то же число, то они разделяют пространство одинаково. В противном случае количество пространства пропорционально количеству.

Для примера, {'fit',200,'2x','1x'} указывает, что высота первой строки соответствует ее содержимому, вторая строка фиксируется на уровне 200 пикселей, а последние две строки совместно используют оставшееся вертикальное пространство. Третья строка использует в два раза больше пространства, чем четвертая строка.

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

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

Интервал между столбцами, заданный как скалярное количество пикселей между соседними столбцами в сетке. Заданное число относится ко всем столбцам.

Интервал между строками, заданный как скалярное количество пикселей между соседними строками в сетке. Заданное число относится ко всем строкам.

Заполнение по внешнему периметру сетки, заданное как вектор формы [left bottom right top]. Элементы вектора описаны в таблице ниже.

Векторный элементОписание
left

Расстояние в пикселях между внутренним левым краем родительского контейнера и левым краем сетки.

bottom

Расстояние в пикселях между внутренним нижним ребром родительского контейнера и нижним ребром сетки.

right

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

top

Расстояние в пикселях между внутренним верхним краем родительского контейнера и верхним краем сетки. Внутренний верхний край родительского контейнера начинается ниже всех украшений, таких как заголовки, метки вкладок или панели меню.

Цвет фона, заданный как триплет RGB, шестнадцатеричный цветовой код или один из опций, перечисленных в таблице.

Триплеты RGB и шестнадцатеричные цветовые коды полезны для определения пользовательских цветов.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный код цвета - это вектор символов или строковый скаляр, который начинается с хэш-символа (#), за которым следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 на F. Значения не зависят от регистра. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' являются эквивалентными.

Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены именованные опции цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Название цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB® использует на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Интерактивность

расширить все

Видимость дочерних элементов, заданная как 'on' или 'off'., или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState.

Установите это свойство на 'off' чтобы скрыть все дочерние компоненты в сетке и их потомки. Дети и их потомки скрыты независимо от значения своих Visible свойства. Когда компоненты скрыты, можно получить и задать их свойства, даже если они не появляются в приложении.

Когда вы устанавливаете это свойство на 'on'дети и их потомки видны только в том случае, если они Visible свойства также установлены в 'on'.

Установка Visible свойство в сетке не изменяет значения Visible свойства его потомков.

Возможность прокрутки, заданная как 'off' или 'on', или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState.

Установка значения свойства 'on' включает прокрутку в диспетчере размещений сетки. В порядок прокрутки эти условия также должны быть выполнены:

  • Сумма значений, заданных для 'RowHeight' свойство диспетчера размещений сетки должно быть больше высоты родительского контейнера.

  • Сумма значений, заданных для 'ColumnWidth' свойство диспетчера размещений сетки должно быть больше ширины родительского контейнера.

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

  • Диспетчер размещений сетки должен содержать компоненты.

Некоторые типы графиков и осей не поддерживают прокручиваемые контейнеры. Однако можно поместить график или оси в нескролируемую панель, а затем поместить панель в прокручиваемый контейнер. Для получения дополнительной информации см. раздел «Отображение графики в App Designer».

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

Положение

расширить все

Опции размещения, заданные как GridLayoutOptions объект. Это свойство задает опции для вложенного контейнера размещения сетки. Если сетка размещения не является дочерним элементом другого контейнера сетки размещения (для примера она является дочерним элементом рисунка или панели), то это свойство пустое и не имеет эффекта. Однако, если размещение сетки является дочерним элементом другого размещения сетки, можно поместить эту дочернюю сетку в нужную строку и столбец родительской сетки путем установки Row и Column свойства на GridLayoutOptions объект.

Например, этот код гнездится grid2 в третьей строке и втором столбце grid1.

grid1 = uigridlayout([4 3]);
grid2 = uigridlayout(grid1);
grid2.Layout.Row = 3;
grid2.Layout.Column = 2;
Чтобы дочерняя сетка охватывала несколько строк или столбцов родительской сетки, задайте Row или Column свойство как двухэлементный вектор. Для примера эта команда охватывает grid2 по столбцам 2 через 3 от grid1:
grid2.Layout.Column = [2 3];

Коллбэки

расширить все

Функция создания объектов, заданная в качестве одного из следующих значений:

  • Указатель на функцию.

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

  • Вектор символов, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Дополнительные сведения об указании коллбэка как указателя на функцию, массива ячеек или вектора символов см. в разделе Запись коллбэков в App Designer.

Это свойство задает функцию обратного вызова, которая должна выполняться, когда MATLAB создает объект. MATLAB инициализирует все значения свойств перед выполнением CreateFcn коллбэк. Если вы не задаете CreateFcn свойство, затем MATLAB выполняет функцию создания по умолчанию.

Установка CreateFcn свойство в существующем компоненте не имеет никакого эффекта.

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

Функция удаления объектов, заданная в качестве одного из следующих значений:

  • Указатель на функцию.

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

  • Вектор символов, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Дополнительные сведения об указании коллбэка как указателя на функцию, массива ячеек или вектора символов см. в разделе Запись коллбэков в App Designer.

Это свойство задает функцию обратного вызова, которая должна выполняться, когда MATLAB удаляет объект. MATLAB выполняет DeleteFcn коллбэк перед уничтожением свойств объекта. Если вы не задаете DeleteFcn свойство, затем MATLAB выполняет функцию удаления по умолчанию.

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

Контроль выполнения обратного вызова

расширить все

Прерывание коллбэка, заданное как 'on' или 'off', или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState.

Это свойство определяет, можно ли прерывать выполняемый коллбэк. Существует два состояния коллбэка:

  • Обратный коллбэк running - это актуальный на данный момент коллбэк.

  • Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.

Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк (если он существует). The Interruptible свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание.

  • Значение 'on' позволяет другим коллбэкам прерывать коллбэки объекта. Прерывание происходит в следующей точке, где MATLAB обрабатывает очередь, например, когда есть drawnow, figure, uifigure, getframe, waitfor, или pause команда.

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

    • Если текущий коллбэк не содержит одну из этих команд, MATLAB завершает выполнение коллбэка без прерывания.

  • Значение 'off' блокирует все попытки прерывания. The BusyAction свойство объекта, имеющего прерывание обратного вызова, определяет, отменяется ли прерывание обратного вызова или помещается в очередь.

Примечание

Прерывание и выполнение коллбэка происходят по-разному в таких ситуациях:

  • Если прерывание обратного вызова является DeleteFcn, CloseRequestFcn или SizeChangedFcn коллбэк, тогда прерывание происходит независимо от Interruptible значение свойства.

  • Если текущий коллбэк выполняющегося в данного момента, waitfor function, тогда прерывание происходит независимо от Interruptible значение свойства.

  • Timer объекты выполняются в соответствии с расписанием независимо от Interruptible значение свойства.

Когда происходит прерывание, MATLAB не сохраняет состояние свойств или отображения. Для примера, объект, возвращенный gca или gcf команда может измениться при выполнении другого коллбэка.

Постановка в очередь коллбэков, заданная как 'queue' или 'cancel'. The BusyAction свойство определяет, как MATLAB обрабатывает выполнение прерываний обратного вызова. Существует два состояния коллбэка:

  • Обратный коллбэк running - это актуальный на данный момент коллбэк.

  • Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.

Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк. The Interruptible свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction свойство объекта, имеющего прерывание обратного вызова, определяет, будет ли оно сброшено или помещено в очередь. Это возможные значения BusyAction свойство:

  • 'queue' - помещает прерывание обратного вызова в очередь вызовов, подлежащих обработке после концов обратного коллбэка.

  • 'cancel' - Не выполняет прерывание обратного вызова.

Это свойство доступно только для чтения.

Статус удаления, возвращенный как логическое значение включения/выключения типа matlab.lang.OnOffSwitchState.

MATLAB устанавливает BeingDeleted свойство к 'on' когда DeleteFcn коллбэк начинает выполняться. The BeingDeleted свойство остается установленным на 'on' пока объект компонента не перестанет существовать.

Проверьте значение BeingDeleted свойство, чтобы убедиться, что объект не будет удален до запроса или изменения.

Родитель/ребенок

расширить все

Родительский контейнер, заданный как Figure объект, созданный с использованием uifigure функция, или один из ее дочерних контейнеров: Tab, Panel, ButtonGroup, или GridLayout. Если контейнер не задан, MATLAB вызывает uifigure функция для создания нового Figure объект, который служит родительским контейнером.

Дочерние элементы, возвращенные как массив объектов компонента. Используйте это свойство для просмотра списка дочерних элементов или для переупорядочения дочерних элементов путем установки свойства на само сочетание. Вы не можете добавить или удалить дочерние элементы, использующие это свойство. Чтобы добавить дочерний элемент в этот список, установите Parent свойство дочернего компонента пользовательского интерфейса.

Изменение порядка дочерних элементов не влияет на расположение компонентов в сетке. Чтобы изменить расположение компонента в сетке, установите его Layout свойство.

Видимость указателя на объект, заданная как 'on', 'callback', или 'off'.

Это свойство контролирует видимость объекта в его родительский список дочерних элементов. Когда объект не отображается в родительский список дочерних элементов, он не возвращается с помощью функций, которые получают объекты, просматривая иерархию объектов или запрашивая свойства. Эти функции включают get, findobj, clf, и close. Объекты действительны, даже если они не видны. Если вы можете получить доступ к объекту, можно задать и получить его свойства, и передать его в любую функцию, которая работает с объектами.

Значение HandleVisibilityОписание
'on'Объект всегда отображается.
'callback'Объект виден из обратных коллбэков или функций, вызываемых коллбэками, но не из функций, инициируемых из командной строки. Эта опция блокирует доступ к объекту в командной строке, но позволяет функциям обратного вызова обращаться к нему.
'off'Объект невидим в любое время. Эта опция используется для предотвращения непреднамеренных изменений пользовательского интерфейса другой функцией. Установите HandleVisibility на 'off' временно скрыть объект во время выполнения этой функции.

Идентификаторы

расширить все

Это свойство доступно только для чтения.

Тип графического объекта, возвращенный как 'uigridlayout'.

Идентификатор объекта, заданный как вектор символов или строковый скаляр. Можно задать уникальное Tag значение, которое служит идентификатором для объекта. Когда вам нужен доступ к объекту в другом месте вашего кода, вы можете использовать findobj функция для поиска объекта на основе Tag значение.

Пользовательские данные, заданные как любой массив MATLAB. Для примера можно задать скаляр, вектор, матрицу, массив ячеек, символьный массив, таблицу или структуру. Используйте это свойство для хранения произвольных данных на объекте.

Если вы работаете в App Designer, создайте общие или частную собственность в приложении, чтобы делиться данными вместо использования UserData свойство. Для получения дополнительной информации см. раздел «Обмен данными в приложениях App Designer».

Введенный в R2018b