Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

setup

クラス: matlab.ui.componentcontainer.ComponentContainer
パッケージ: matlab.ui.componentcontainer

コンポーネント コンテナー サブクラスのインスタンスの設定

構文

setup(obj)

説明

setup(obj) は UI コンポーネントの初期状態を設定します。これは、UI コンポーネント オブジェクトが作成される際に 1 回実行されます。名前と値のペアの引数として UI コンポーネントのコンストラクター メソッドに渡されたプロパティ値はすべて、setup メソッドの実行後に代入されます。

このメソッドを定義して、クラスの新しいインスタンスごとに初期化コードを実行します。たとえば、このメソッドを使用すると、基となるグラフィックス オブジェクトを作成し、それらのオブジェクトで初期プロパティ値を設定できます。

入力引数

すべて展開する

matlab.graphics.componentcontainer.ComponentContainer 基底クラスから継承するクラスのオブジェクト。

属性

Abstracttrue
Protectedtrue

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

4 つの値を入力して IP アドレスを形成するためのカスタム コンポーネントを作成する IPAddressComponent というクラスを定義します。

このクラスを定義するには、次の機能をもつ以下のクラス定義を含む IPAddressComponent.m というファイルを作成します。

  • IP アドレスを保存する Value パブリック プロパティ。

  • 4 つの数値編集フィールドを横一列に配置する NumericField および GridLayout プライベート プロパティ。

  • NumericField および GridLayout を初期化する setup メソッド。

  • IP アドレスの変更時に NumericField 値を更新する update メソッド。

  • 4 つの数値編集フィールドの値に基づいて Value プロパティを設定する handleNewValue メソッド。

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 で導入