setup

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

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

Синтаксис

setup(obj)

Описание

setup(obj) устанавливает начальное состояние компонента UI. Он выполняется один раз при создании объекта компонента пользовательского интерфейса. Любые значения свойств, переданные в качестве аргументов пары "имя-значение" в метод конструктора пользовательского компонента, назначаются после 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
Для просмотра документации необходимо авторизоваться на сайте