Способ настройки отображения объекта с помощью matlab.mixin.CustomDisplay
класс зависит от:
Какие части отображения необходимо настроить
Состояния объекта, которые вы хотите использовать для пользовательского отображения
Если в раскладку по умолчанию вносятся небольшие изменения, переопределите соответствующие методы построителя элементов (Методы Конструктора элементов). Например, предположим, что вы хотите:
Измените порядок или значение свойств, отобразите подмножество свойств или создайте группы свойств
Изменение текста заголовка
Добавить нижний колонтитул
Если вы задаете нестандартное отображение для конкретного состояния объекта (скаляр, для примера), то наилучшим подходом является переопределение соответствующего метода обработчика состояний (методы обработчика состояний).
В некоторых случаях наилучшим подходом может быть комбинация переопределений методов. Например, ваша реализация displayScalarObject
мог бы
Используйте некоторые из утилитных методов (Utility Methods), чтобы создать собственные экранные строки с использованием деталей из отображения по умолчанию
Вызовите метод построителя деталей, чтобы получить текст по умолчанию для этой конкретной части отображения
Реализуйте совершенно другое отображение для скалярных объектов.
Как только вы переопределяете любое CustomDisplay
метод, MATLAB® вызывает ваше переопределение во всех случаях, когда был бы вызван метод суперкласса. Для примера, если вы переопределяете getHeader
метод, ваше переопределение должно обрабатывать все случаи, когда метод обработчика состояний вызывает getHeader
. (См. Методы, вызываемые для данного состояния объекта)
Вот несколько простых случаев, которые показывают, какие методы использовать для конкретного настроенного отображения.
Используйте нестандартное размещение для скалярного отображения объектов, который полностью определен в displayScalarObject
метод:
classdef MyClass < matlab.mixin.CustomDisplay ... methods (Access = protected) function displayScalarObject(obj) % Implement the custom display for scalar obj end end end
Используйте стандартное размещение изображения, но создайте пользовательский список свойств для скалярного и нескалярного отображения:
classdef MyClass < matlab.mixin.CustomDisplay ... methods(Access = protected) function groups = getPropertyGroups(obj) % Return PropertyGroup instances end end end
Используйте стандартное размещение отображения, но создайте пользовательский список свойств только для скаляра. Вызывайте суперкласс getPropertyGroups
для нескалярного случая.
classdef MyClass < matlab.mixin.CustomDisplay properties Prop1 Prop2 Prop3 end methods(Access = protected) function groups = getPropertyGroups(obj) if isscalar(obj) % Scalar case: change order propList = {'Prop2','Prop1','Prop3'}; groups = matlab.mixin.util.PropertyGroup(propList) else % Nonscalar case: call superclass method groups = getPropertyGroups@matlab.mixin.CustomDisplay(obj); end end end end
Измените значения, отображаемые для некоторых свойств в скалярном случае, создав пары свойство/значение в struct
. Этот getPropertyGroups
метод отображает только Prop1
и Prop2
, и отображает значение Prop2
как Prop1
разделяется на Prop3
.
classdef MyClass < matlab.mixin.CustomDisplay properties Prop1 Prop2 Prop3 end methods(Access = protected) function groups = getPropertyGroups(obj) if isscalar(obj) % Specify the values to be displayed for properties propList = struct('Prop1',obj.Prop1,... 'Prop2',obj.Prop1/obj.Prop3); groups = matlab.mixin.util.PropertyGroup(propList) else % Nonscalar case: call superclass method groups = getPropertyGroups@matlab.mixin.CustomDisplay(obj); end end end end
Полные реализации классов см. в следующих разделах: