Main Content


Update instance of UI component container subclass after setting properties

Since R2020b




update(obj) updates the contents of the UI component after one or more property values change. Define this method to update the underlying graphics objects in the UI component using the new property values. This method executes during the next drawnow execution after the user changes one or more property values on the UI component.

Input Arguments

expand all

Object of the class that inherits from the matlab.ui.componentcontainer.ComponentContainer base class.



To learn about attributes of methods, see Method Attributes.


expand all

Define a class called IPAddressComponent that creates a custom component for inputting four values to form an IP address.

To define the class, create a file called IPAddressComponent.m that contains the following class definition with these features:

  • A Value public property that stores the IP address.

  • NumericField and GridLayout private properties that place four numeric edit fields in a horizontal row.

  • A setup method that initializes NumericField and GridLayout.

  • An update method that updates the NumericField values when the IP address changes.

  • A handleNewValue method that sets the Value property based on the values of the 4 numeric edit fields.

classdef IPAddressComponent < matlab.ui.componentcontainer.ComponentContainer
    % IPAddressComponent a set of 4 edit fields for IP Address input
        Value (1,4) {mustBeNonnegative, mustBeInteger, mustBeLessThanOrEqual(Value, 255)} = [192 168 1 2];
    events (HasCallbackProperty, NotifyAccess = protected)
        ValueChanged % ValueChangedFcn callback property will be generated

    properties (Access = private, Transient, NonCopyable)
        NumericField (1,4) matlab.ui.control.NumericEditField
        GridLayout matlab.ui.container.GridLayout
    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,4], ...
            % Building blocks
            for k = 1:4
                obj.NumericField(k) = uieditfield(obj.GridLayout, 'numeric',...
                    'Limits', [0 255], 'RoundFractionalValues', true, ...
                    'FontName', 'Courier New', 'FontWeight', 'bold', ...
                    'ValueChangedFcn',@(src,event) obj.handleNewValue());
        function update(obj)
            % Update view
            for k = 1:4
                obj.NumericField(k).Value = obj.Value(k);
    methods (Access=private)
        function handleNewValue(obj)
            obj.Value = [obj.NumericField.Value];  
            % Execute the event listeners and the ValueChangedFcn callback property

Next, create the component by calling the IPAddressComponent constructor method, which is provided by the ComponentContainer class, and return the object as h. Specify a function that displays the new IP address in the Command Window when the component value changes.

 h = IPAddressComponent;
 h.ValueChangedFcn = @(src,event) disp("Value changed to: " + num2str(h.Value));

Enter the IP Address into the edit fields. MATLAB® displays the updated IP address in the Command Window.


  • Do not call drawnow within the setup and update methods of your UI component class. Such calls can cause unexpected screen updates in apps that use the UI component. Instead, rely on app creators (who use your component) to call drawnow in their app code when they need to trigger a screen update. These calls from outside the component code update all UI components in the app, including those created using the ComponentContainer class.

Version History

Introduced in R2020b