exponenta event banner

установка

Класс: matlab.ui.componentcontainer.ComponentContainer
Пакет: matlab.ui.componentcontainer

Настройка экземпляра подкласса контейнера компонентов

Синтаксис

setup(obj)

Описание

setup(obj) задает начальное состояние компонента пользовательского интерфейса. Она выполняется один раз при создании объекта компонента пользовательского интерфейса. Любые значения свойств, переданные в качестве аргументов пары «имя-значение» методу конструктора компонента пользовательского интерфейса, назначаются после setup выполняется метод.

Определите этот метод для выполнения кода инициализации для каждого нового экземпляра класса. Например, этот метод можно использовать для создания базовых графических объектов и установки начальных значений свойств для этих объектов.

Входные аргументы

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

Объект класса, наследующий от matlab.graphics.componentcontainer.ComponentContainer базовый класс.

Признаки

Abstracttrue
Protectedtrue

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

Примеры

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

Определение класса с именем 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