Пакет: matlab.ui.componentcontainer
Базовый класс для разработки объектов компонента пользовательского интерфейса
matlab.ui.componentcontainer.ComponentContainer класс, на котором вы основываетесь, чтобы сделать ваши собственные классы объектов Компонента пользовательского интерфейса. Когда вы задаете подкласс этого базового класса, можно использовать ComponentContainer свойства и методы, чтобы создать ваши объекты компонента пользовательского интерфейса. Задайте этот синтаксис на первой линии вашего файла определения класса, чтобы непосредственно наследоваться ComponentContainer класс, где MyComponent имя вашего объекта:
classdef MyComponent < matlab.ui.componentcontainer.ComponentContainer
matlab.ui.componentcontainer.ComponentContainer классом является handle класс.
Abstract | true |
ConstructOnLoad | true |
HandleCompatible | true |
Для получения информации об атрибутах класса см. Атрибуты класса.
BackgroundColor BackgroundColor (значение по умолчанию) | триплет RGB | шестнадцатеричный цветовой код | 'r' | 'g' | 'b' | ...Цвет фона в виде триплета 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' |
|
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
Visible — Состояние видимости'on' (значение по умолчанию) | логическое значение включения - выключенияСостояние видимости в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.
'on' — Отобразите объект.
'off' — Скройте объект, не удаляя его. Все еще можно получить доступ к свойствам невидимого компонента пользовательского интерфейса.
Чтобы заставить ваше приложение запуститься быстрее, установите Visible свойство к 'off' для всех компонентов, которые не должны появляться при запуске.
Изменение размера невидимого контейнера инициировало SizeChangedFcn коллбэк, когда это становится видимым.
Изменение Visible свойство контейнера не изменяет значения Visible свойства дочерних компонентов. Это верно даже при том, что сокрытие контейнера заставляет дочерние компоненты быть скрытыми.
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
ContextMenu — Контекстное менюGraphicsPlaceholder массив (значение по умолчанию) | ContextMenu объектКонтекстное меню в виде ContextMenu объект создал использование uicontextmenu функция. Используйте это свойство отобразить контекстное меню, когда вы щелкнете правой кнопкой по компоненту.
GetAccess | public |
SetAccess | public |
NonCopyable | true |
Transient | true |
GetObservable | true |
SetObservable | true |
Position — Размер компонента пользовательского интерфейса и местоположение, исключая поля[left bottom width height]Размер компонента пользовательского интерфейса и местоположение, исключая поля для художественных оформлений, таких как подписи по осям и отметки деления. Задайте это свойство как вектор из формы [left bottom width height].
Примечание
Установка этого свойства не оказывает влияния, когда родительским элементом компонента пользовательского интерфейса является GridLayout.
GetAccess | public |
SetAccess | public |
Dependent | true |
Units — Единицы измерения'pixels' (значение по умолчанию)Единицы измерения в виде 'pixels'.
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
Layout — Параметры макетаLayoutOptions массив (значение по умолчанию) | GridLayoutOptions объектПараметры макета в виде GridLayoutOptions объект. Это свойство задает опции для компонентов, которые являются дочерними элементами контейнеров макетов сетки. Если компонент не является дочерним элементом контейнера макетов сетки (например, это - дочерний элемент фигуры или панели), то это свойство пусто и не оказывает влияния. Однако, если компонент является дочерним элементом контейнера макетов сетки, можно поместить компонент в желаемую строку и столбец сетки путем установки Row и Column свойства на GridLayoutOptions объект.
Например, этот код помещает компонент изображения в третью строку и второй столбец ее родительской сетки.
g = uigridlayout([4 3]); im = uiimage(g); im.ImageSource = 'peppers.png'; im.ScaleMethod = 'fill'; im.Layout.Row = 3; im.Layout.Column = 2;
Чтобы заставить изображение охватить несколько строк или столбцов, задайте Row или Column свойство как двухэлементный вектор. Например, это изображение охватывает столбцы 2 через 3.
im.Layout.Column = [2 3];
GetAccess | public |
SetAccess | public |
Interruptible — Прерывание коллбэка'on' (значение по умолчанию) | логическое значение включения - выключенияПрерывание коллбэка в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.
Это свойство определяет, может ли рабочий коллбэк быть прерван. Существует два состояния обратного вызова:
Выполняемый обратный вызов — это актуальный на данный момент обратный вызов.
Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.
Каждый раз, когда MATLAB вызывает обратный вызов, этот обратный вызов пытается прервать текущий обратный вызов (если он существует). Interruptible свойство объекта, владеющего рабочим коллбэком, определяет, позволено ли прерывание.
Значение 'on' позволяет другим коллбэкам прерывать коллбэки объекта. Прерывание происходит на следующем этапе, где MATLAB обрабатывает очередь, такой как тогда, когда существует a drawnow, figure, uifigure, getframe, waitfor, или pause команда.
Если рабочий коллбэк содержит одну из тех команд, то MATLAB останавливает выполнение коллбэка в той точке и выполняет прерывание обратного вызова. MATLAB возобновляет выполнение обратного вызова при завершении прерывания.
Если рабочий коллбэк не содержит одну из тех команд, то MATLAB закончил выполнять коллбэк без прерывания.
Значение 'off' блоки все попытки прерывания. BusyAction свойство объекта, владеющего прерыванием обратного вызова, определяет, отбрасывается ли прерывание обратного вызова или помещается в очередь.
Примечание
Прерывание и выполнение обратного вызова происходят по-разному в таких ситуациях:
Если прерыванием обратного вызова является DeleteFcnCloseRequestFcn или SizeChangedFcn коллбэк, затем прерывание происходит независимо от Interruptible значение свойства.
Если рабочий коллбэк является выполняющимся в данным моментом waitfor функция, затем прерывание происходит независимо от Interruptible значение свойства.
Timer объекты выполняются согласно расписанию независимо от Interruptible значение свойства.
Когда происходит прерывание, MATLAB не сохраняет состояние свойств или изображения. Например, объект, возвращенный gca или gcf команда может измениться, когда другой коллбэк выполняется.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BusyAction — Постановка в очередь коллбэка'queue' (значение по умолчанию) | 'cancel'Постановка в очередь коллбэка в виде 'queue' или 'cancel'. BusyAction свойство определяет, как MATLAB обрабатывает выполнение прерываний обратного вызова. Существует два состояния обратного вызова:
Выполняемый обратный вызов — это актуальный на данный момент обратный вызов.
Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.
Каждый раз, когда MATLAB инициирует обратный вызов, этот обратный вызов пытается прервать текущий обратный вызов. Interruptible свойство объекта, владеющего рабочим коллбэком, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction свойство объекта, владеющего прерыванием обратного вызова, определяет, отбрасывается ли это или вставило очередь. Это возможные значения BusyAction свойство:
'queue' — Помещает прерывание обратного вызова в очередь, чтобы быть обработанным после рабочего выполнения концов коллбэка.
'cancel' — Не выполняет прерывание обратного вызова.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BeingDeleted — Состояние DeletionСостояние Deletion, возвращенное как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.
MATLAB устанавливает BeingDeleted свойство к 'on' когда DeleteFcn коллбэк начинает выполнение. BeingDeleted свойство остается установленным в 'on' пока объект компонента больше не существует.
Проверяйте значение BeingDeleted свойство проверить, что объект не собирается быть удаленным прежде, чем запросить или изменить его.
GetAccess | public |
SetAccess | protected |
GetObservable | true |
SetObservable | true |
Parent — Родительский контейнерFigure объект (значение по умолчанию) | Panel возразите | Tab возразите | GridLayout объектРодительский контейнер компонента в виде FigureПанель, Tab, или GridLayout объект.
GetAccess | public |
SetAccess | public |
Transient | true |
Dependent | true |
NonCopyable | true |
GetObservable | true |
SetObservable | true |
Children — Дочерние элементы компонента пользовательского интерфейсаGraphicsPlaceholder массивДочерние элементы компонента пользовательского интерфейса, возвращенные как пустой GraphicsPlaceholder массив. Пользовательские компоненты пользовательского интерфейса не имеют никаких дочерних элементов. Установка этого свойства не оказывает влияния.
GetAccess | public |
SetAccess | public |
Transient | true |
Dependent | true |
NonCopyable | true |
HandleVisibility — Видимость указателя на объект'on' (значение по умолчанию) | 'callback' | 'off'Видимость указателя на объект в виде 'on''callback', или 'off'.
Это свойство контролирует видимость объекта в списке дочерних элементов его родителя. Когда объект не отображается в списке дочерних элементов его родителя, он не возвращается с помощью функций, которые получают объекты, просматривая иерархию объектов или запрашивая свойства. Эти функции включают get, findobj, clf, и closeОбъекты действительны, даже если они не видны. Если вы можете получить доступ к объекту, вы можете установить его, получить его свойства и передать его любой функции, которая работает с объектами.
| Значение HandleVisibility | Описание |
|---|---|
'on' | Объект всегда виден. |
'callback' | Объект отображается из коллбэков или функций, вызванных коллбэками, но не из функций, вызванных из командной строки. Эта опция блокирует доступ к объекту в командной строке, но позволяет обратным вызовам обращаться к нему. |
'off' | Объект невидим в любое время. Эта опция предназначена для предотвращения непреднамеренных изменений в пользовательском интерфейсе другой функцией. Установите HandleVisibility к 'off' временно скрыть объект во время выполнения этой функции. |
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
Type — Тип объекта компонента пользовательского интерфейсаТип объекта компонента пользовательского интерфейса, возвращенного как вектор символов, содержащий имя компонента.
GetAccess | public |
SetAccess | protected |
NonCopyable | true |
Transient | true |
Tag — Идентификатор объекта'' (значение по умолчанию) | вектор символов | строковый скалярИдентификатор объекта в виде вектора символов или строкового скаляра. Можно задать уникальный Tag значение, чтобы служить идентификатором для объекта. Когда вам нужен доступ к объекту в другом месте в вашем коде, можно использовать findobj функционируйте, чтобы искать основанное на объектах на Tag значение.
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
UserData UserData [] (значение по умолчанию) | массивПользовательские данные в виде любого массива MATLAB. Например, можно задать скаляр, вектор, матрицу, массив ячеек, символьный массив, таблицу или структуру. Используйте это свойство хранить произвольные данные на объекте.
Если вы работаете в App Designer, создаете публичные или частные свойства в приложении, чтобы осуществлять обмен данными вместо того, чтобы использовать UserData свойство. Для получения дополнительной информации смотрите, Осуществляют обмен данными В рамках Приложений App Designer.
GetAccess | public |
SetAccess | public |
Transient | true |
GetObservable | true |
SetObservable | true |
Задайте класс под названием IPAddressComponent это создает собственный компонент для того, чтобы ввести четыре значения, чтобы сформировать IP-адрес.
Чтобы задать класс, создайте файл под названием IPAddressComponent.m это содержит следующее определение класса с этими функциями:
Value общественная собственность, которая хранит IP-адрес.
NumericField и GridLayout частные свойства, которые помещают четыре числовых поля редактирования в горизонтальную строку.
setup метод, который инициализирует NumericField и GridLayout.
update метод, который обновляет NumericField значения, когда IP-адрес изменяется.
handleNewValue метод, который устанавливает Value свойство на основе значений 4 числовых полей редактирования.
classdef IPAddressComponent < matlab.ui.componentcontainer.ComponentContainer % IPAddressComponent a set of 4 edit fields for IP Address input properties Value (1,4) {mustBeNonnegative, mustBeInteger, mustBeLessThanOrEqual(Value, 255)} = [192 168 1 2]; end events (HasCallbackProperty, NotifyAccess = protected) ValueChanged % ValueChangedFcn callback property will be generated end properties (Access = private, Transient, NonCopyable) NumericField (1,4) matlab.ui.control.NumericEditField GridLayout matlab.ui.container.GridLayout end methods (Access=protected) function setup(obj) % Set the initial position of this component obj.Position = [100 100 150 22]; % Layout obj.GridLayout = uigridlayout(obj,[1,5], ... 'RowHeight',{22},'ColumnWidth',{30,30,30,30,22},... 'Padding',0,'ColumnSpacing',2); % Building blocks for k = 1:4 obj.NumericField(k) = uieditfield(obj.GridLayout, 'numeric',... 'Limits', [0 255], 'RoundFractionalValues', true, ... 'FontName', 'Courier New', 'FontWeight', 'bold', ... 'ValueChangedFcn',@(o,e) obj.handleNewValue()); end end function update(obj) % Update view for k = 1:4 obj.NumericField(k).Value = obj.Value(k); end end end methods (Access=private) function handleNewValue(obj) obj.Value = [obj.NumericField.Value]; % Execute the event listeners and the ValueChangedFcn callback property notify(obj,'ValueChanged'); end end end
Затем создайте компонент путем вызова IPAddressComponent метод конструктора, который обеспечивается ComponentContainer класс, и возвращает объект как h. Задайте функцию, которая отображает новый IP-адрес в Командном окне, когда значение компонента изменяется.
h = IPAddressComponent;
h.ValueChangedFcn = @(o,e) disp(['Value changed to: ', num2str(h.Value)]);

Введите IP-адрес 192.168.1.10 в поля редактирования. MATLAB отображает обновленный IP-адрес в Командном окне.


При определении класса опционально можно добавить блок для событий, которые запускает компонент пользовательского интерфейса.
Чтобы создать такой блок события, дайте вашему классу events блокируйтесь с HasCallbackProperty атрибут. Когда вы делаете это, MATLAB создает общественную собственность для каждого события в блоке. Общественная собственность хранит пользователя, предоставленного коллбэку, чтобы выполниться, когда событие стреляет. Имя общественной собственности является именем события, добавленного с буквами Fcn. Например, пользовательский интерфейс сила компонента задает общественное мероприятие ValueChanged и сгенерируйте соответствующую общественную собственность ValueChangedFcn. Используйте notify метод, чтобы запустить событие и выполнить коллбэк в свойстве.
Например, вот блок события для компонента пользовательского интерфейса, который позволяет пользователю выбирать значение цвета.
events (HasCallbackProperty, NotifyAccess = protected) ValueChanged end
notify метод, чтобы запустить ValueChanged событие и выполняет коллбэк в ValueChangedFcn свойство, когда пользователь выбирает значение цвета.function getColorFromUser(obj) c = uisetcolor(obj.Value); if (isscalar(c) && (c == 0)) return; end % Update the Value property oldValue = obj.Value; obj.Value = c; % Execute user callbacks and listeners notify(obj,'ValueChanged'); end
f = uifigure; c = ColorSelector(f,'ValueChangedFcn',@(o,e)disp('Changed'))
setup | update | matlab.graphics.chartcontainer.ChartContainer
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.