Пакет: matlab.ui.componentcontainer
Базовый класс для разработки объектов компонентов пользовательского интерфейса
matlab.ui.componentcontainer.ComponentContainer - это класс, на котором создаются собственные классы объектов компонента пользовательского интерфейса. При определении подкласса этого базового класса можно использовать ComponentContainer свойства и методы построения объектов компонентов пользовательского интерфейса. Укажите этот синтаксис в первой строке файла определения класса для непосредственного наследования от ComponentContainer класс, где MyComponent - имя объекта:
classdef MyComponent < matlab.ui.componentcontainer.ComponentContainer
matlab.ui.componentcontainer.ComponentContainer класс является handle класс.
Abstract | true |
HandleCompatible | true |
Сведения об атрибутах класса см. в разделе Атрибуты класса.
BackgroundColor - Цвет фона[.94 .94 .94] (по умолчанию) | триплет 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Состояние видимости, указанное как 'on' или 'off'или как числовое или логическое 1 (true) или 0 (false). Значение '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Прерывание обратного вызова, указанное как 'on' или 'off'или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства в качестве логического значения. Значение сохраняется как логическое значение типа вкл/выкл matlab.lang.OnOffSwitchState.
Это свойство определяет, можно ли прервать выполняющийся обратный вызов. Существует два состояния обратного вызова:
Выполняемый обратный вызов - это выполняемый в данный момент обратный вызов.
Обратный вызов с прерыванием - это обратный вызов, который пытается прервать выполняющийся обратный вызов.
Всякий раз, когда MATLAB вызывает обратный вызов, этот обратный вызов пытается прервать выполняющийся обратный вызов (если он существует). Interruptible свойство объекта, владеющего выполняющимся обратным вызовом, определяет, разрешено ли прерывание.
Значение 'on' позволяет другим обратным вызовам прерывать обратные вызовы объекта. Прерывание происходит в следующей точке, где MATLAB обрабатывает очередь, например, при наличии drawnow, figure, uifigure, getframe, waitfor, или pause команда.
Если выполняемый обратный вызов содержит одну из этих команд, MATLAB останавливает выполнение обратного вызова в этот момент и выполняет прерванный обратный вызов. MATLAB возобновляет выполнение выполняющегося обратного вызова после завершения прерванного обратного вызова.
Если выполняемый обратный вызов не содержит одну из этих команд, MATLAB завершает выполнение обратного вызова без прерывания.
Значение 'off' блокирует все попытки прерывания. BusyAction свойство объекта, владеющего прерывистым обратным вызовом, определяет, отбрасывается ли прерывистый обратный вызов или помещается в очередь.
Примечание
Прерывание и выполнение обратного вызова ведут себя по-разному в следующих ситуациях:
Если обратный вызов с прерыванием является DeleteFcn, CloseRequestFcn или 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 - Статус удаленияСостояние удаления, возвращаемое как логическое значение включения/выключения типа matlab.lang.OnOffSwitchState.
MATLAB устанавливает BeingDeleted свойство для 'on' когда DeleteFcn обратный вызов начинает выполнение. BeingDeleted свойство остается установленным в значение 'on' до тех пор, пока объект-компонент больше не будет существовать.
Проверьте значение BeingDeleted для проверки того, что объект не будет удален перед запросом или изменением.
GetAccess | public |
SetAccess | protected |
GetObservable | true |
SetObservable | true |
Parent - Родительский контейнерFigure объект (по умолчанию) | Panel объект | Tab объект | GridLayout объектРодительский контейнер компонента, указанный как Figure, Panel, 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 - Данные пользователя[] (по умолчанию) | массивПользовательские данные, указанные как любой массив MATLAB. Например, можно указать скаляр, вектор, матрицу, массив ячеек, символьный массив, таблицу или структуру. Это свойство используется для хранения произвольных данных объекта.
Если вы работаете в App Designer, создайте открытые или частные свойства в приложении для совместного использования данных вместо использования UserData собственность. Дополнительные сведения см. в разделе Общий доступ к данным в приложениях App Designer.
GetAccess | public |
SetAccess | public |
Transient | true |
GetObservable | true |
SetObservable | true |
Определение класса с именем IPAddressComponent создает пользовательский компонент для ввода четырех значений для формирования IP-адреса.
Чтобы определить класс, создайте файл с именем IPAddressComponent.m содержит следующее определение класса с этими функциями:
A Value общедоступное свойство, хранящее IP-адрес.
NumericField и GridLayout частные свойства, помещающие четыре числовых поля редактирования в горизонтальную строку.
A setup метод, инициализирующий NumericField и GridLayout.
Один update метод, который обновляет NumericField значения при изменении IP-адреса.
A 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 создает общее свойство для каждого события в блоке. Свойство public хранит предоставленный пользователем обратный вызов для выполнения при возникновении события. Имя общедоступного свойства - это имя события, добавленное с буквами 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'))
matlab.graphics.chartcontainer.ChartContainer | setup | update
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.