Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

setup

类: matlab.ui.componentcontainer.ComponentContainer
包: matlab.ui.componentcontainer

设置组件容器子类的实例

语法

setup(obj)

说明

setup(obj) 设置 UI 组件的初始状态。它在创建 UI 组件对象时执行一次。执行 setup 方法后,将对作为名称-值对组参数传递给 UI 组件的构造函数方法的任何属性进行赋值。

定义此方法以便为类的每个新实例执行初始化代码。例如,您可以使用此方法创建底层图形对象,并设置这些对象的初始属性值。

输入参数

全部展开

matlab.graphics.componentcontainer.ComponentContainer 基类继承的类的对象。

属性

Abstracttrue
Protectedtrue

要了解方法的属性,请参阅方法属性

示例

全部展开

定义名为 IPAddressComponent 的类,该类创建一个自定义组件,用于输入四个值来构成 IP 地址。

要定义该类,请创建包含以下类定义的名为 IPAddressComponent.m 的文件,该文件具有如下特性:

  • 存储 IP 地址的 Value 公共属性。

  • NumericFieldGridLayout 私有属性,它们在一个水平行中放置四个数值编辑字段。

  • 一个 setup 方法,用于初始化 NumericFieldGridLayout

  • 一个 update 方法,用于在 IP 地址发生变化时更新 NumericField 值。

  • 一个 handleNewValue 方法,它基于 4 个数值编辑字段的值设置 Value 属性。

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

接下来,通过调用由 ComponentContainer 类提供的 IPAddressComponent 构造函数方法来创建组件,并将对象返回为 h。指定一个函数,当组件值更改时,该函数在命令行窗口中显示新 IP 地址。

 h = IPAddressComponent;
 h.ValueChangedFcn = @(o,e) disp(['Value changed to: ', num2str(h.Value)]);

在编辑字段中输入 IP 地址 192.168.1.10。MATLAB 在命令行窗口中显示更新后的 IP 地址。

在 R2020b 中推出