Начиная с R2021a, при создании пользовательского класса компонентов можно настроить компонент на интерактивное использование создателями приложений в App Designer. После настройки компонента пользовательского интерфейса создатели приложения могут добавить компонент в библиотеку компонентов и взаимодействовать с ним на холсте App Designer и в инспекторе свойств.
Выполните следующие действия по настройке, если создан класс компонентов пользовательского интерфейса, определенный как подкласс matlab.ui.componentcontainer.ComponentContainer базовый класс, и вы хотели бы использовать его одним из следующих способов:
Получите доступ к компоненту пользовательского интерфейса из библиотеки компонентов App Designer и используйте его в интерактивном режиме для создания приложения App Designer.
Предоставьте общий доступ к компоненту пользовательского интерфейса другим пользователям для интерактивного использования при создании приложений в App Designer.
Чтобы разрешить интерактивное использование пользовательского компонента в App Designer, существует ряд требований, которые должен удовлетворять класс пользовательского компонента.
Для успешной настройки компонента пользовательского интерфейса setup метод класса компонента пользовательского интерфейса не может иметь обязательных входных аргументов. Кроме того, класс компонентов не может динамически добавлять дополнительные компоненты пользовательского интерфейса в родительский контейнер. Единственное исключение состоит в том, что класс может динамически добавлять ContextMenu компонент в родительской фигуре.
Для отображения общедоступного свойства класса компонентов в инспекторе свойств необходимо указать его тип или назначить ему значение по умолчанию. Если свойство является перечислением, необходимо указать его тип и назначить ему значение по умолчанию. Кроме того, тип свойства должен принадлежать списку типов, поддерживаемых App Designer. В этой таблице показаны допустимые типы свойств и их внешний вид в инспекторе свойств.
| Категория свойств | Поддерживаемые типы данных | Входные данные инспектора свойств |
|---|---|---|
| Числовой | Скаляры или массивы типа single, double, int8, int32, int64, uint8, uint16, uint32, или uint64 | Изменить поле |
| Логичный | logical | Флажок |
| Текст | Скаляры типа string, скаляры или векторы строк типа charи скаляры или векторы типа cell | Текстовая область |
| Перечисление | enumeration | Редактируемое раскрывающееся меню |
Дополнительные сведения об определении типов свойств и назначении значений по умолчанию см. в разделе Управление свойствами пользовательских компонентов пользовательского интерфейса.
Создание папки с именем MyComponents в конкретном месте, например, C:\. Копировать ColorSelector определение класса и сохраните его с именем ColorSelector.m в папке C:\MyComponents.
classdef ColorSelector < matlab.ui.componentcontainer.ComponentContainer % UI component to select colors % Public properties properties Value {validateattributes(Value, ... {'double'},{'<=',1,'>=',0,'size',[1 3]})} = [1 0 0]; end % Events events (HasCallbackProperty, NotifyAccess = protected) ValueChanged % ValueChangedFcn will be the generated callback property end % Private properties properties (Access = private, Transient, NonCopyable) Grid matlab.ui.container.GridLayout Button matlab.ui.control.Button EditField matlab.ui.control.EditField end methods (Access = protected) function setup(obj) % Grid layout to manage building blocks obj.Grid = uigridlayout(obj,[1 2],'ColumnWidth',{'1x',22}, ... 'RowHeight',{'fit'},'ColumnSpacing',2,'Padding',2); % Edit field for value display and button to launch uisetcolor obj.EditField = uieditfield(obj.Grid,'Editable',false, ... 'HorizontalAlignment','center'); obj.Button = uibutton(obj.Grid,'Text',char(9998), ... 'ButtonPushedFcn',@(o,e) obj.getColorFromUser()); end function update(obj) % Update edit field and button colors set([obj.EditField obj.Button], 'BackgroundColor', obj.Value, ... 'FontColor', obj.getContrastingColor(obj.Value)); % Update the display text obj.EditField.Value = num2str(obj.Value, '%0.2g '); end end methods (Access = private) function getColorFromUser(obj) c = uisetcolor(obj.Value); if (isscalar(c) && (c == 0)) return; end % Update the Value property obj.Value = c; % Execute user callbacks and listeners notify(obj,'ValueChanged'); end function contrastColor = getContrastingColor(~,color) % Calculate opposite color c = color * 255; contrastColor = [1 1 1]; if (c(1)*.299 + c(2)*.587 + c(3)*.114) > 186 contrastColor = [0 0 0]; end end end end
Настройте пользовательский компонент пользовательского интерфейса для использования в App Designer с помощью appdesigner.customcomponent.configureMetadata функция.
Вызовите функцию, передав ей путь к файлу класса компонентов. Функция открывает диалоговое окно «Метаданные пользовательского компонента App Designer». В этом диалоговом окне можно указать метаданные компонента. App Designer использует эти метаданные для отображения компонента в библиотеке компонентов.
appdesigner.customcomponent.configureMetadata('C:\MyComponents\ColorSelector.m');
Диалоговое окно предварительно заполняет все необходимые метаданные из определения класса компонентов. Предварительно заполненные метаданные можно редактировать с помощью формы. Выберите OK для настройки ColorSelector Компонент пользовательского интерфейса.
После нажатия кнопки ОК функция создает папку с именем resources внутри MyComponents папка. Внутри resources , функция создает файл с именем appDesigner.json. Этот файл содержит метаданные, предоставленные в диалоговом окне, а также другие метаданные MATLAB ®, необходимые для обеспечения доступности компонента в App Designer.
Примечание
Не изменять appDesigner.json файл от руки. Чтобы изменить любые пользовательские метаданные компонента пользовательского интерфейса, используйте appdesigner.customcomponent.configureMetadata функция.
После настройки пользовательского класса компонентов пользовательского интерфейса с помощью appdesigner.customcomponent.configureMetadata ее можно просмотреть и использовать в App Designer. Чтобы компонент пользовательского интерфейса появился в библиотеке компонентов App Designer, необходимо добавить папку, содержащую файл класса и созданную resources к пути MATLAB.
Например, для использования ColorSelector Компонент пользовательского интерфейса в App Designer, добавьте MyComponents путь к папке MATLAB, следуя инструкциям в разделе Изменение папок в пути поиска. Затем откройте App Designer, введя appdesigner в командной строке MATLAB. Открыв окно, выберите Пустые приложения. ColorSelector Компонент пользовательского интерфейса отображается в нижней части библиотеки компонентов в разделе «Мои компоненты».
Перетащите экземпляр ColorSelector Компонент пользовательского интерфейса на холсте App Designer. Обратите внимание, что в инспекторе свойств отображается список общедоступных свойств Value и ValueChangedFcn обратный вызов, созданный в определении класса компонента пользовательского интерфейса.

Примечание
Избегайте внесения изменений в общие свойства и события в определении класса компонентов пользовательского интерфейса при использовании компонента в App Designer, поскольку это может привести к ошибкам или неожиданному поведению.
Реконфигурировать ранее настроенный класс компонентов пользовательского интерфейса в следующих случаях:
Необходимо изменить существующие метаданные компонента пользовательского интерфейса и обновить отображение компонента в библиотеке компонентов App Designer.
В определении класса внесены изменения в позицию или формат компонента пользовательского интерфейса.
Для изменения конфигурации компонента пользовательского интерфейса вызовите appdesigner.customcomponent.configureMetadata путем передачи ему пути к файлу класса компонентов пользовательского интерфейса. Функция открывает диалоговое окно «Метаданные пользовательского компонента App Designer» с предварительно заполненными существующими метаданными.
appdesigner.customcomponent.configureMetadata('C:\MyComponents\ColorSelector.m');Обновить метаданные, изменив категорию на Color и установка имени автора в MathWorks, затем нажмите кнопку ОК.

Вернитесь в App Designer. Теперь компонент отображается в разделе «Цвет» библиотеки компонентов. Наведите курсор на компонент. Теперь появляется имя автора.

Чтобы удалить пользовательский компонент пользовательского интерфейса из App Designer, используйте appdesigner.customcomponent.removeMetadata функция.
Вызовите функцию, передав ей путь к файлу класса компонентов. Функция удаляет метаданные для компонента пользовательского интерфейса из appDesigner.json файл внутри resources и удаляет компонент из библиотеки компонентов App Designer.
appdesigner.customcomponent.removeMetadata('C:\MyComponents\ColorSelector.m');После удаления метаданных App Designer для пользовательского компонента все приложения App Designer, использующие его, загружаются неправильно. Чтобы продолжить редактирование приложений, использующих компонент пользовательского интерфейса, измените его конфигурацию с помощью appdesigner.customcomponent.configureMetadata функция.
После настройки компонента пользовательского интерфейса можно использовать этот компонент совместно с другими пользователями в App Designer. Можно либо предоставить доступ к соответствующим файлам напрямую, либо упаковать компонент в виде панели инструментов. В любом случае необходимо также предоставить общий доступ к созданному resources папка.
Чтобы предоставить общий доступ к настроенному компоненту пользовательского интерфейса непосредственно пользователю, создайте папку со следующим содержимым.
Файл класса компонентов пользовательского интерфейса
Произведенный resources папка
Проинструктируйте пользователя, совместно использующего компонент пользовательского интерфейса, добавить общую папку к пути MATLAB.
Пакетируйте свой компонент пользовательского интерфейса как панель инструментов, выполнив действия, описанные в разделе Создание и совместное использование панелей инструментов. Убедитесь, что папка, упакованная как панель инструментов, содержит следующее содержимое:
Файл класса компонентов пользовательского интерфейса
Произведенный resources папка
Можно предоставить общий доступ к полученному .mltbx непосредственно с пользователями. Чтобы установить его, дважды щелкните значок .mltbx в браузере текущей папки MATLAB.
Кроме того, можно совместно использовать компонент пользовательского интерфейса в качестве дополнения, загрузив .mltbx для обмена файлами хранилища MATLAB. Пользователи могут найти и установить надстройку на панели инструментов MATLAB, выполнив следующие действия:
На панели инструментов MATLAB на вкладке Главная (Home) в разделе Среда (Environment) выберите Надстройки (Add-On).
![]()
Найдите надстройку, просмотрев доступные категории в левой части окна проводника надстроек. Либо используйте панель поиска для поиска надстройки с помощью ключевого слова.
Щелкните надстройку, чтобы открыть ее страницу подробных сведений.
На странице свойств нажмите кнопку Добавить, чтобы установить надстройку.
appdesigner | appdesigner.customcomponent.configureMetadata | appdesigner.customcomponent.removeMetadata