Main Content

表示のカスタマイズ方法の選択

カスタム表示の実装方法

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 メソッドは Prop1Prop2 のみを表示し、Prop2 の値を、Prop1Prop3 で除算した商として表示します。

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

完全なクラスの定義

完全なクラスの実装については、以下のセクションを参照してください。