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,4], ...
'RowHeight',{22},'ColumnWidth',{'1x','1x','1x','1x'},...
'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',@(src,event) 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 アドレスをコマンド ウィンドウに表示する関数を指定します。
IP アドレス 192.168.1.10
を編集フィールドに入力します。MATLAB® は更新された IP アドレスをコマンド ウィンドウに表示します。