Выберите технику для отображения Индивидуальной настройки

Способы реализации пользовательского отображения

Способ настройки отображения объекта с помощью 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

Полные определения классов

Полные реализации классов см. в следующих разделах: