Выбор метода для настройки отображения

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

Путем вы настраиваете отображение объекта с помощью класса matlab.mixin.CustomDisplay, зависит от:

  • Какие части отображения вы хотите настроить

  • Какой объект утверждает, что вы хотите использовать пользовательское отображение

Если вы вносите небольшие изменения в раскладку по умолчанию, то заменяете соответствующего разработчика части методы (Разработчик Части Методы). Например, предположите, что вы хотите:

  • Измените порядок или значение свойств, отобразите подмножество свойств или создайте группы свойства

  • Измените текст заголовка

  • Добавьте нижний колонтитул

Если вы задаете нестандартное отображение для конкретного объектного состояния (скаляр, например), то лучший подход должен заменить соответствующий метод обработчиков состояния (Методы обработчиков состояния).

В некоторых случаях комбинация переопределений метода может быть лучшим подходом. Например, ваша реализация displayScalarObject может

  • Используйте некоторые служебные методы (Служебные методы) создать ваши собственные строки отображения с помощью частей от отображения по умолчанию

  • Вызовите разработчика части метод, чтобы получить текст по умолчанию для той конкретной части отображения

  • Реализуйте совершенно другое отображение для скалярных объектов.

Если вы заменяете любой метод 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

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

Для полных реализаций класса смотрите эти разделы: