表示のカスタマイズ方法の選択
カスタム表示の実装方法
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
完全なクラスの定義
完全なクラスの実装については、以下のセクションを参照してください。