matlab.ui.componentcontainer.ComponentContainer class

Пакет: 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 ложь). Значение '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 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

Это свойство определяет, может ли рабочий коллбэк быть прерван. Существует два состояния обратного вызова:

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

  • Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.

Каждый раз, когда MATLAB вызывает обратный вызов, этот обратный вызов пытается прервать текущий обратный вызов (если он существует). Interruptible свойство объекта, владеющего рабочим коллбэком, определяет, позволено ли прерывание.

  • Значение 'on' позволяет другим коллбэкам прерывать коллбэки объекта. Прерывание происходит на следующем этапе, где MATLAB обрабатывает очередь, такой как тогда, когда существует a drawnow, figure, uifigure, getframe, waitfor, или pause команда.

    • Если рабочий коллбэк содержит одну из тех команд, то MATLAB останавливает выполнение коллбэка в той точке и выполняет прерывание обратного вызова. MATLAB возобновляет выполнение обратного вызова при завершении прерывания.

    • Если рабочий коллбэк не содержит одну из тех команд, то MATLAB закончил выполнять коллбэк без прерывания.

  • Значение 'off' блоки все попытки прерывания. BusyAction свойство объекта, владеющего прерыванием обратного вызова, определяет, отбрасывается ли прерывание обратного вызова или помещается в очередь.

Примечание

Прерывание и выполнение обратного вызова происходят по-разному в таких ситуациях:

  • Если прерыванием обратного вызова является DeleteFcnCloseRequestFcn или 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

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

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

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

Атрибуты:

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

Родительский контейнер компонента в виде FigureПанель, Tab, или GridLayout объект.

Атрибуты:

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

Дочерние элементы компонента пользовательского интерфейса, возвращенные как пустой GraphicsPlaceholder или 1D массив объектов компонента. Дочерние элементы объекта компонента пользовательского интерфейса могут быть любым объектом компонента пользовательского интерфейса.

Вы не можете добавить или удалить дочерние компоненты с помощью Children свойство компонента пользовательского интерфейса. Используйте Children значение свойства, чтобы просмотреть список дочерних элементов или переупорядочить дочерние элементы. Порядок дочерних элементов в массиве значения свойства отражает порядок "от первого до последнего" (порядок размещения) компонентов на экране.

Чтобы добавить дочерний элемент в этот список, установите Parent свойство дочернего компонента к компоненту пользовательского интерфейса.

Атрибуты:

GetAccess
public
SetAccess
public
Transient
true
Dependent
true
NonCopyable
true

Видимость указателя на объект компонента в его родительском списке дочерних элементов в виде одного из этих значений:

  • 'on' — Указатель на объект компонента всегда отображается.

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

  • 'callback' — Указатель на объект компонента отображается из коллбэков или функций, вызванных коллбэками, но не из функций, вызванных из командной строки. Эта опция блокирует доступ к объекту в Командном окне, но это позволяет функциям обратного вызова получать доступ к нему.

Если объект не перечислен в Children свойство родительского объекта компонента, затем функционирует, которые получают указатели на объект путем поиска иерархии объектов, или запрос свойств указателя не может возвратить его. Это включает get, findobj, gca, gcf, gco, newplot, cla, clf, и close.

Скрытые указатели на объекты все еще действительны. Установите корневой ShowHiddenHandles свойство к 'on' перечислять все указатели на объект, независимо от их HandleVisibility установка свойства.

Атрибуты:

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 это содержит следующее определение класса с этими функциями:

  • Value общественная собственность, которая хранит IP-адрес.

  • NumericField и GridLayout частные свойства, которые помещают четыре числовых поля редактирования в горизонтальную строку.

  • setup метод, который инициализирует NumericField и GridLayout.

  • update метод, который обновляет NumericField значения, когда IP-адрес изменяется.

  • 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
Для просмотра документации необходимо авторизоваться на сайте