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
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
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.
Enter the IP Address 192.168.1.10
into the edit fields. MATLAB® displays the updated IP address in the Command Window.