update

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

Синтаксис

update(obj)

Описание

update(obj) обновляет содержимое компонента пользовательского интерфейса после изменения одного или нескольких значений общественной собственности. Определите этот метод, чтобы обновить базовые графические объекты в компоненте пользовательского интерфейса с помощью новых значений свойств. Этот метод выполняется в течение следующего drawnow выполнение после изменения пользователем одного или нескольких значений свойств в компоненте пользовательского интерфейса.

Входные параметры

расширить все

Объект класса, который наследует от matlab.ui.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