exponenta event banner

Настройка пользовательских компонентов пользовательского интерфейса для App Designer

Начиная с 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

Настройте пользовательский компонент пользовательского интерфейса для использования в App Designer с помощью appdesigner.customcomponent.configureMetadata функция.

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

appdesigner.customcomponent.configureMetadata('C:\MyComponents\ColorSelector.m');

App Designer Custom Component Metadata dialog for the ColorSelector component.

Диалоговое окно предварительно заполняет все необходимые метаданные из определения класса компонентов. Предварительно заполненные метаданные можно редактировать с помощью формы. Выберите OK для настройки ColorSelector Компонент пользовательского интерфейса.

После нажатия кнопки ОК функция создает папку с именем resources внутри MyComponents папка. Внутри resources , функция создает файл с именем appDesigner.json. Этот файл содержит метаданные, предоставленные в диалоговом окне, а также другие метаданные MATLAB ®, необходимые для обеспечения доступности компонента в App Designer.

Примечание

Не изменять appDesigner.json файл от руки. Чтобы изменить любые пользовательские метаданные компонента пользовательского интерфейса, используйте appdesigner.customcomponent.configureMetadata функция.

Просмотр настроенного компонента пользовательского интерфейса в App Designer

После настройки пользовательского класса компонентов пользовательского интерфейса с помощью appdesigner.customcomponent.configureMetadata ее можно просмотреть и использовать в App Designer. Чтобы компонент пользовательского интерфейса появился в библиотеке компонентов App Designer, необходимо добавить папку, содержащую файл класса и созданную resources к пути MATLAB.

Например, для использования ColorSelector Компонент пользовательского интерфейса в App Designer, добавьте MyComponents путь к папке MATLAB, следуя инструкциям в разделе Изменение папок в пути поиска. Затем откройте App Designer, введя appdesigner в командной строке MATLAB. Открыв окно, выберите Пустые приложения. ColorSelector Компонент пользовательского интерфейса отображается в нижней части библиотеки компонентов в разделе «Мои компоненты».

Перетащите экземпляр ColorSelector Компонент пользовательского интерфейса на холсте App Designer. Обратите внимание, что в инспекторе свойств отображается список общедоступных свойств Value и ValueChangedFcn обратный вызов, созданный в определении класса компонента пользовательского интерфейса.

A ColorSelector UI component on the App Designer canvas. The UI component is selected and editable via the App Designer Component Browser.

Примечание

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

Реконфигурировать компонент пользовательского интерфейса

Реконфигурировать ранее настроенный класс компонентов пользовательского интерфейса в следующих случаях:

  • Необходимо изменить существующие метаданные компонента пользовательского интерфейса и обновить отображение компонента в библиотеке компонентов App Designer.

  • В определении класса внесены изменения в позицию или формат компонента пользовательского интерфейса.

Для изменения конфигурации компонента пользовательского интерфейса вызовите appdesigner.customcomponent.configureMetadata путем передачи ему пути к файлу класса компонентов пользовательского интерфейса. Функция открывает диалоговое окно «Метаданные пользовательского компонента App Designer» с предварительно заполненными существующими метаданными.

appdesigner.customcomponent.configureMetadata('C:\MyComponents\ColorSelector.m');

Обновить метаданные, изменив категорию на Color и установка имени автора в MathWorks, затем нажмите кнопку ОК.

App Designer Custom Component Metadata dialog for the ColorSelector component with the category and author's name fields edited.

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

App Designer Component Library with the ColorSelector UI component displayed under the category Color (Add-on). The mouse cursor is pointing to the component, which displays a message with the component name, version, description, author, and file location.

Удалить компонент пользовательского интерфейса из конструктора приложений

Чтобы удалить пользовательский компонент пользовательского интерфейса из 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, выполнив следующие действия:

  1. На панели инструментов MATLAB на вкладке Главная (Home) в разделе Среда (Environment) выберите Надстройки (Add-On).

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

  3. Щелкните надстройку, чтобы открыть ее страницу подробных сведений.

  4. На странице свойств нажмите кнопку Добавить, чтобы установить надстройку.

См. также

Функции

Классы

Связанные темы