Main Content

listener

クラス: handle

イベント ソースにバインドされないイベント リスナーの作成

構文

eL = listener(hSource,EventName,callback)
eL = listener(hSource,PropertyName,EventName,callback)

説明

eL = listener(hSource,EventName,callback)EventName という名前のイベントに関するリスナーを作成します。hSource はイベントのソースであるハンドル オブジェクトです。callback はイベントがトリガーされたときに MATLAB® が呼び出す関数ハンドルです。

hSource がイベント ソース オブジェクトの配列である場合、リスナーはその配列内で削除済み状態ではないすべてのオブジェクトについて、指定されたイベントに応答します。

eL = listener(hSource,PropertyName,EventName,callback) は、事前定義プロパティ イベントのうちいずれかのリスナーを作成します。事前定義されたプロパティ イベントは 4 種類あります。

イベント名イベントが発生する時点
PreSet

プロパティの set アクセス メソッドを呼び出す前の、プロパティ値が設定される直前

PostSet

プロパティ値が設定された直後

PreGet

プロパティの get アクセス メソッドを呼び出す前の、プロパティ値のクエリが処理される直前

PostGet

プロパティ値がクエリに返された直後

入力引数

すべて展開する

イベントのソースであるハンドル オブジェクト。単一のオブジェクトまたはオブジェクト配列として指定します。

ソース オブジェクト上でトリガーされるイベントの名前。大文字と小文字を区別する、引用符付きのテキストとして指定します。プロパティ イベントの場合、イベント名は 4 つの事前定義プロパティ イベントのいずれかです。

データ型: char | string

リスナーをトリガーするプロパティ イベントをもつプロパティの名前。次の値のいずれかとして指定します。

  • 文字ベクトルまたは文字ベクトルの cell 配列 (個々の文字ベクトルは hSource のオブジェクトに定義されたプロパティの名前)

  • string または string 配列 (個々の string は hSource のオブジェクトに定義されたプロパティの名前)

  • hSource 内のオブジェクトに定義されたプロパティに対応する、スカラーの matlab.metadata.Property オブジェクト、または matlab.metadata.Property オブジェクトの配列

hSource がスカラーの場合にのみ、動的プロパティのプロパティ イベントにリスナーを付加できます。hSource が非スカラーである場合、プロパティは hSource クラスに属さなければならず、(クラス定義にない) 動的プロパティを含めることはできません。

プロパティ イベントのリッスンを可能にするには、ソース プロパティを定義するクラスで GetObservable および SetObservable のプロパティ属性が設定されなければなりません。

関数ハンドルとして指定されたリスナー コールバック

データ型: function_handle

出力引数

すべて展開する

リスナー オブジェクト。event.listener オブジェクトまたは event.proplistener オブジェクトのハンドルとして返されます。

すべて展開する

グラフィックス figure ウィンドウの Color プロパティに関するプロパティ リスナーを作成します。

fig = figure;
propListener = listener(fig,'Color','PostSet',@(src,evnt)disp('Color changed'));

Color プロパティ値を yellow に設定します。プロパティを設定すると、Figure に関する PostSet プロパティ イベントがトリガーされます。イベント ソース オブジェクトは、ハンドル fig によって参照される特定の Figure です。

set(fig,'Color','yellow')

リスナー オブジェクトを削除します。

delete(propListener)

ヒント

リスナーのライフサイクル

リスナーを削除するには、listener により返されるリスナー オブジェクトを削除します。たとえば、次のステートメントはハンドル クラスの delete メソッドを呼び出して、リスナーを削除します。

delete(el)

リスナー オブジェクトに対する delete の呼び出しにより、リスナーが破棄されるため、イベントが発生してもコールバック関数は実行されなくなります。

listener メソッドは、リスナーのライフサイクルをイベントのソースであるオブジェクトにバインドしません。イベント ソース オブジェクトの破棄は、リスナー オブジェクトのライフサイクルに影響しません。

listener メソッドを使用してソース オブジェクトから独立に作成したリスナーは、明示的に破棄しなければなりません。リスナー変数に対して handle delete メソッドを呼び出すと (delete(el) など)、リスナーが明示的に破棄されます。リスナーを含む変数の再定義やクリアで、その他に参照がない場合はリスナーを削除できます。リスナーのライフサイクルを、イベント ソース オブジェクトのライフサイクルにバインドするには、addlistener を使用します。

代替方法

MATLAB でリスナーのライフ サイクルを管理するには、addlistener を使用します。

バージョン履歴

R2017b で導入