Пакет: matlab.ui.componentcontainer
Базовый класс для разработки объектов компонентов пользовательского интерфейса
matlab.ui.componentcontainer.ComponentContainer - класс, созданный вами для создания собственных классов объектов UI Component. Когда вы задаете подкласс этого базового класса, можно использовать ComponentContainer свойства и методы для создания объектов компонента. Задайте этот синтаксис в первой линии файла определения класса, чтобы непосредственно наследовать от ComponentContainer класс, где MyComponent - имя вашего объекта:
classdef MyComponent < matlab.ui.componentcontainer.ComponentContainer
The 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', или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа 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 (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 команда может измениться при выполнении другого коллбэка.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BusyAction - постановка в очередь коллбэков'queue' (по умолчанию) | 'cancel'Постановка в очередь коллбэков, заданная как 'queue' или 'cancel'. The BusyAction свойство определяет, как MATLAB обрабатывает выполнение прерываний обратного вызова. Существует два состояния коллбэка:
Обратный коллбэк running - это актуальный на данный момент коллбэк.
Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.
Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк. The Interruptible свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction свойство объекта, имеющего прерывание обратного вызова, определяет, будет ли оно сброшено или помещено в очередь. Это возможные значения BusyAction свойство:
'queue' - помещает прерывание обратного вызова в очередь вызовов, подлежащих обработке после концов обратного коллбэка.
'cancel' - Не выполняет прерывание обратного вызова.
GetAccess | public |
SetAccess | public |
GetObservable | true |
SetObservable | true |
BeingDeleted - Статус удаленияСтатус удаления, возвращенный как логическое значение включения/выключения типа matlab.lang.OnOffSwitchState.
MATLAB устанавливает BeingDeleted свойство к 'on' когда DeleteFcn коллбэк начинает выполняться. The 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 массивДочерние компоненты UI, возвращенные как пустые 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 создает общественную собственность для каждого события в блоке. Общественная собственность сохраняет обратный коллбэк, предоставленный пользователем, для выполнения при возникновении события. Имя общественной собственности - это имя события, к которому добавлены буквы Fcn. Для примера компонент UI может определять публичное событие 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.