Настройте каждую из трех частей отображения - верхний колонтитул, группы свойств и нижний колонтитул.
Примечание
В этом примере используется EmployeeInfo класс, описанный в разделе «Класс с отображением объектов по умолчанию».
Для заголовка:
Используйте заголовок по умолчанию для массивов нескалярных объектов.
Построить текст заголовка со связанным именем класса и именем отдела (от 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 является классом дескриптора):
>> 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