Настройте каждую из трех частей отображения — заголовок, группы свойства и нижний колонтитул.
Примечание
Этот пример использует EmployeeInfo
класс описан в разделе Class with Default Object Display.
Для заголовка:
Используйте заголовок по умолчанию для нескалярных массивов объектов.
Создайте текст заголовка с соединенным именем класса и именем отдела (от Department
свойство
Для свойств:
Нескалярные массивы объектов отображают подмножество имен свойства в различном порядке, чем значение по умолчанию.
Скалярные объекты создают две группы свойства, которые имеют заголовки (Public Info
и Personal Info
).
Для нижнего колонтитула:
Добавьте нижний колонтитул в отображение, только когда объект является допустимым скаляром, который отображает значения свойств.
Вот индивидуально настраиваемое отображение объекта EmployeeInfo
класс.
Emp123 =
EmployeeInfo Dept: Product Development
Public Info
Name: 'Bill Tork'
JobTitle: 'Software Engineer'
Personal Info
Salary: 1000
Password: 'bill123'
Company Private
Вот пользовательское отображение массива EmployeeInfo
объекты:
[Emp123,Emp124]
ans =
1x2 EmployeeInfo array with properties:
Department
Name
JobTitle
Вот отображение массива пустого объекта:
>> EmployeeInfo.empty(0,5)
ans =
0x5 EmployeeInfo array with properties:
Department
Name
JobTitle
Вот отображение указателя на удаленный объект (EmployeeInfo
класс Handle):
>> delete(Emp123) >> Emp123 Emp123 = handle to deleted EmployeeInfo
EmployeeInfo
класс заменяет три matlab.mixin.CustomDisplay
методы, чтобы реализовать показанное отображение:
Каждый метод должен привести к желаемым результатам с каждыми из следующих входных параметров:
Скалярный объект
Нескалярный объектный массив
Массив пустого объекта
MATLAB® вызовы getHeader
получить текст заголовка. EmployeeInfo
класс заменяет этот метод, чтобы реализовать пользовательский заголовок для скалярного отображения. Вот то, как это работает:
Нескалярный (включая пустой объект) массивы вызывают суперкласс getHeader
, который возвращает заголовок по умолчанию.
Скалярные указатели на удаленные объекты не приводят к вызову getHeader
.
Скалярные входные параметры создают пользовательский заголовок с помощью getClassNameForHeader
статический метод возвратить соединенный текст имени класса и значение Department
свойство.
Вот EmployeeInfo
переопределение getHeader
метод. Необходимый защищенный доступ наследован от суперкласса.
methods (Access = protected) function header = getHeader(obj) if ~isscalar(obj) header = getHeader@matlab.mixin.CustomDisplay(obj); else className = matlab.mixin.CustomDisplay.getClassNameForHeader(obj); newHeader = [className,' Dept: ',obj.Department]; header = sprintf('%s\n',newHeader); end end end
MATLAB вызывает getPropertyGroups
получить PropertyGroup
объекты, которые управляют, как отображены свойства. Это переопределение метода задает два различных списка свойств в зависимости от состояния объекта:
Для нескалярных входных параметров, включая пустые массивы и массивы, содержащие указатели на удаленные объекты, создают список свойств как массив ячеек, чтобы переупорядочить свойства.
По умолчанию MATLAB не отображает значения свойств для нескалярных входных параметров.
Для скалярных входных параметров создайте две группы свойства с заголовками. Скалярная ветвь кода перечисляет свойства в различном порядке, чем нескалярный случай и включает Salary
и Password
свойства. MATLAB автоматически присваивает значения свойств.
Скалярные указатели на удаленные объекты не приводят к вызову getPropertyGroups
.
Обе ветви возвращают matlab.mixin.util.PropertyGroup
объект, который определяет как к отображениям свойства объектов.
Вот EmployeeInfo
переопределение getPropertyGroups
метод. Защищенный доступ наследован от суперкласса.
methods (Access = protected) function propgrp = getPropertyGroups(obj) if ~isscalar(obj) propList = {'Department','Name','JobTitle'}; propgrp = matlab.mixin.util.PropertyGroup(propList); else gTitle1 = 'Public Info'; gTitle2 = 'Personal Info'; propList1 = {'Name','JobTitle'}; propList2 = {'Salary','Password'}; propgrp(1) = matlab.mixin.util.PropertyGroup(propList1,gTitle1); propgrp(2) = matlab.mixin.util.PropertyGroup(propList2,gTitle2); end end end
MATLAB вызывает getFooter
получить текст нижнего колонтитула. EmployeeInfo
getFooter
метод задает нижний колонтитул для отображения, которое включено только, когда вход является допустимым скалярным объектом. Во всех других случаях, getFooter
возвращает пустой char
вектор.
Скалярные указатели на удаленные объекты не приводят к вызову getFooter
.
methods (Access = protected) function footer = getFooter(obj) if isscalar(obj) footer = sprintf('%s\n','Company Private'); else footer = ''; end end end