update

Обновите экземпляр подкласса контейнера компонента пользовательского интерфейса после установки свойств

Синтаксис

update(obj)

Описание

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

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

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

Объект класса, который наследовался matlab.ui.componentcontainer.ComponentContainer базовый класс.

Примеры

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

Задайте класс под названием 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