Определите класс, называемый IPAddressComponent
который создает собственный компонент для ввода четырех значений для формирования IP-адреса.
Чтобы определить класс, создайте файл с именем IPAddressComponent.m
который содержит следующее определение класса с этими функциями:
A Value
общественная собственность, которое хранит IP-адрес.
NumericField
и GridLayout
частная собственность, которые помещают четыре числовых поля редактирования в горизонтальную строку.
A setup
метод, который инициализирует NumericField
и GridLayout
.
Система координат update
метод, который обновляет NumericField
значения при изменении IP-адреса.
A handleNewValue
метод, который устанавливает Value
свойство, основанное на значениях 4 числовых полей редактирования.
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
Затем создайте компонент путем вызова IPAddressComponent
метод конструктора, который предоставляется ComponentContainer
Класс и возврат объект как h
. Задайте функцию, которая отображает новый IP-адрес в Командном окне при изменении значения компонента.
Введите IP-адрес 192.168.1.10
в поля редактирования. MATLAB отображает обновленный IP-адрес в Командном окне.