exponenta event banner

класс matlab.ui.componentcontainer.ComponentContainer

Пакет: 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

Сведения об атрибутах класса см. в разделе Атрибуты класса.

Свойства

развернуть все

Цвет и стиль

Цвет фона, указанный как триплет 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
Интерактивность

Состояние видимости, указанное как '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 объект, созданный с помощью uicontextmenu функция. Это свойство используется для отображения контекстного меню при щелчке правой кнопкой мыши на компоненте.

Атрибуты:

GetAccess
public
SetAccess
public
NonCopyable
true
Transient
true
GetObservable
true
SetObservable
true
Положение

Размер и расположение компонента пользовательского интерфейса, за исключением полей для декораций, например меток осей и делений. Укажите это свойство как вектор формы [left bottom width height].

Примечание

Установка этого свойства не действует, если родительским компонентом пользовательского интерфейса является GridLayout.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true

Единицы измерения, указанные как 'pixels'.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true
GetObservable
true
SetObservable
true

Параметры компоновки, указанные как 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
Управление выполнением обратного вызова

Прерывание обратного вызова, указанное как '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

Очередь обратного вызова, указанная как 'queue' или 'cancel'. BusyAction определяет, как MATLAB обрабатывает выполнение прерывания обратных вызовов. Существует два состояния обратного вызова:

  • Выполняемый обратный вызов - это выполняемый в данный момент обратный вызов.

  • Обратный вызов с прерыванием - это обратный вызов, который пытается прервать выполняющийся обратный вызов.

Всякий раз, когда MATLAB вызывает обратный вызов, этот обратный вызов пытается прервать выполняющийся обратный вызов. Interruptible свойство объекта, владеющего выполняющимся обратным вызовом, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction свойство объекта, владеющего прерывистым обратным вызовом, определяет, отбрасывается он или помещается в очередь. Это возможные значения BusyAction свойство:

  • 'queue' - помещает обратный вызов с прерыванием в очередь, подлежащую обработке после завершения выполнения обратного вызова.

  • 'cancel' - не выполняет обратный вызов прерывания.

Атрибуты:

GetAccess
public
SetAccess
public
GetObservable
true
SetObservable
true

Состояние удаления, возвращаемое как логическое значение включения/выключения типа matlab.lang.OnOffSwitchState.

MATLAB устанавливает BeingDeleted свойство для 'on' когда DeleteFcn обратный вызов начинает выполнение. BeingDeleted свойство остается установленным в значение 'on' до тех пор, пока объект-компонент больше не будет существовать.

Проверьте значение BeingDeleted для проверки того, что объект не будет удален перед запросом или изменением.

Атрибуты:

GetAccess
public
SetAccess
protected
GetObservable
true
SetObservable
true
Родительский/дочерний

Родительский контейнер компонента, указанный как Figure, Panel, Tab, или GridLayout объект.

Атрибуты:

GetAccess
public
SetAccess
public
Transient
true
Dependent
true
NonCopyable
true
GetObservable
true
SetObservable
true

Дочерние компоненты пользовательского интерфейса, возвращенные как пустые GraphicsPlaceholder массив. Пользовательские компоненты пользовательского интерфейса не имеют дочерних элементов. Установка этого свойства не влияет.

Атрибуты:

GetAccess
public
SetAccess
public
Transient
true
Dependent
true
NonCopyable
true

Видимость дескриптора объекта, указанного как 'on', 'callback', или 'off'.

Это свойство управляет видимостью объекта в родительском списке потомков. Если объект не виден в списке нижестоящих элементов родительского объекта, он не возвращается функциями, получающими объекты путем поиска в иерархии объектов или запроса свойств. Эти функции включают get, findobj, clf, и close. Объекты действительны, даже если они не видны. При наличии доступа к объекту можно задать и получить его свойства и передать его любой функции, которая работает с объектами.

Значение HandleVisibilityОписание
'on'Объект всегда виден.
'callback'Объект виден из обратных вызовов или функций, вызываемых обратными вызовами, но не из функций, вызываемых из командной строки. Этот параметр блокирует доступ к объекту в командной строке, но разрешает доступ к нему функциям обратного вызова.
'off'Объект всегда невидим. Этот параметр полезен для предотвращения непреднамеренных изменений пользовательского интерфейса другой функцией. Установите HandleVisibility кому 'off' , чтобы временно скрыть объект во время выполнения этой функции.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true
GetObservable
true
SetObservable
true
Идентификаторы

Тип объекта компонента пользовательского интерфейса, возвращаемый как символьный вектор, содержащий имя компонента.

Атрибуты:

GetAccess
public
SetAccess
protected
NonCopyable
true
Transient
true

Идентификатор объекта, заданный как вектор символа или скаляр строки. Можно указать уникальный Tag для использования в качестве идентификатора объекта. При необходимости доступа к объекту в другом месте кода можно использовать findobj для поиска объекта на основе Tag значение.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true
GetObservable
true
SetObservable
true

Пользовательские данные, указанные как любой массив 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-адрес в окне команд.

Подробнее

развернуть все

Представлен в R2020b