メインコンテンツ

DropDown

ドロップダウン UI コンポーネント

  • Drop-down UI component

説明

ドロップダウン UI コンポーネントを使用して、アプリ ユーザーはオプションを選択したり、テキスト入力したりすることができます。DropDown オブジェクトを使用して、ドロップダウン リストの作成後にドロップダウン リストの外観と動作を変更します。

作成

uidropdown 関数を使用してアプリでドロップダウン リストを作成します。

プロパティ

すべて展開する

ドロップダウン

値。Items または ItemsData の配列の要素として指定します。既定では、ValueItems の最初の要素になります。

ValueItems の要素として指定すると、その要素に一致するドロップダウン項目が選択されます。ItemsData が空でない場合、ValueItemsData の要素に設定しなければならず、ドロップダウンでリスト内の関連する項目が選択されます。

Editable'on' に設定されている場合、Value を文字ベクトルまたは string スカラーとして追加で指定できます。

ドロップダウン項目。文字ベクトルの cell 配列、string 配列、または 1 次元の categorical 配列として指定します。重複する要素を使用できます。ドロップダウン コンポーネントには Items の配列の要素数と同数のオプションが表示されます。このプロパティを categorical 配列として指定した場合、MATLAB® はカテゴリの完全なセットではなく、配列内の値を使用します。

例: {'Red','Yellow','Blue'}

例: {'1','2','3'}

Items プロパティ値の各要素に関連付けるデータ。1 行 n 列の数値配列または 1 行 n 列の cell 配列として指定します。重複する要素を使用できます。

たとえば、Items 値を従業員の氏名に設定した場合、ItemsData 値を対応する従業員の ID 番号に設定できます。ItemsData 値はアプリ ユーザーに表示されません。

ItemsData 値と Items 値の配列要素数が一致しない場合、次のいずれかが起こります。

  • ItemsData 値が空の場合、Items 値のすべての要素がアプリ ユーザーに表示されます。

  • ItemsData 値の要素数が Items 値の要素数よりも多い場合、Items のすべての要素がアプリ ユーザーに表示されます。MATLAB は ItemsData の余分な要素を無視します。

  • ItemsData 値が空ではないが、要素数が Items 値の要素数よりも少ない場合、対応する要素が ItemsData 値にある Items 値の要素のみがアプリ ユーザーに表示されます。

例: {'One','Two','Three'}

例: [10 20 30 40]

項目または項目データのリスト内のコンポーネント値のインデックス。正の整数として指定します。

ほとんどの場合、Value プロパティを使用して、コンポーネント値のクエリと更新を行えます。ただし、ValueIndex プロパティが有用なのは、ItemsItemsData のプロパティが両方とも空ではないときです。この場合、ValueIndex プロパティを使用して、現在の値に対応する Items の要素をクエリできます。

fig = uifigure;
dd = uidropdown(fig, ...
    "Items",["Red","Green","Blue"], ...
    "ItemsData",["#F00","#0F0","#00F"]);
idx = dd.ValueIndex;
 
disp(dd.Items(idx) + ": " + dd.Value)
Red: #F00

ドロップダウン コンポーネントの Editable プロパティが 'on' に設定されている場合、ValueIndex を空の配列 ([]) として指定することもできます。アプリ ユーザーが Items 内の項目に対応しない値をコンポーネントに入力すると、MATLAB は ValueIndex プロパティを空の配列に設定します。ValueIndex を空の配列に設定すると、MATLAB は Value プロパティを '' に設定します。

プレースホルダー テキスト。文字ベクトルまたは string スカラーとして指定します。プレースホルダーは、ドロップダウン項目の短い説明を提示します。プレースホルダー テキストは、ドロップダウン コンポーネントに '' が表示される場合にのみ表示されます。これが当てはまるのは、以下の 2 つの場合です。

  • Value プロパティが '' に設定されている。

  • Value プロパティが、対応する項目が '' である ItemsData の要素に設定されている。

たとえば、ItemsData をもたないドロップダウン コンポーネントでプレースホルダーを表示するには、以下のように ''Items に追加し、Value プロパティを '' に設定します。

fig = uifigure('Position',[100 100 300 200]);
dd = uidropdown(fig,'Items',{'','One','Two'}, ...
                'Value','', ...
                'Placeholder','Options');

UI figure window that contains a drop-down list with text "Options"

フォントと色

フォント名。システムでサポートされているフォント名として指定します。既定のフォントは、特定のオペレーティング システムとロケールによって異なります。

指定したフォントが利用できない場合、MATLAB は、アプリが実行中のシステムで利用可能なフォントから最もよく一致するフォントを使用します。

例: 'Arial'

フォント サイズ。正の数値として指定します。測定単位はピクセルです。既定のフォント サイズは、特定のオペレーティング システムとロケールによって異なります。

例: 14

フォントの太さ。次のいずれかの値として指定します。

  • 'normal' — 各フォントで定義されている既定の太さ

  • 'bold''normal' よりも太い文字

すべてのフォントに太字フォントがあるとは限りません。太字がないフォントの場合、'bold' を指定すると標準フォントの太さになります。

フォントの角度。'normal' または 'italic' として指定します。すべてのフォントにイタリックのフォントの角度があるわけではありません。イタリックがないフォントの場合、'italic' を指定すると標準フォントの角度になります。

フォントの色。RGB 3 成分、16 進数カラー コードまたは表にリストされたオプションのいずれかとして指定します。

RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、3 桁または 6 桁の 0 から F までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。この値は大文字と小文字を区別しません。したがって、カラー コード "#FF8800""#ff8800""#F80"、および "#f80" は等価です。

あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。

色名省略名RGB 3 成分16 進数カラー コード外観
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

次の表に、ライト テーマとダーク テーマでのプロットの既定のカラー パレットを示します。

パレットパレットの色

"gem" — ライト テーマの既定値

R2025a より前: ほとんどのプロットで、これらの色が既定で使用されます。

Sample of the "gem" color palette

"glow" — ダーク テーマの既定値

Sample of the "glow" color palette

orderedcolors 関数と rgb2hex 関数を使用すると、これらのパレットの RGB 3 成分および 16 進数カラー コードを取得できます。たとえば、"gem" パレットの RGB 3 成分を取得し、16 進数カラー コードに変換します。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

R2023b より前: RGB = get(groot,"FactoryAxesColorOrder") を使用して、RGB 3 成分を取得します。

R2024a より前: H = compose("#%02X%02X%02X",round(RGB*255)) を使用して、16 進数カラー コードを取得します。

背景色。RGB 3 成分、16 進数カラー コード、または表にリストされた色オプションのいずれかとして指定します。

RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、3 桁または 6 桁の 0 から F までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。この値は大文字と小文字を区別しません。したがって、カラー コード "#FF8800""#ff8800""#F80"、および "#f80" は等価です。

あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。

色名省略名RGB 3 成分16 進数カラー コード外観
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

次の表に、ライト テーマとダーク テーマでのプロットの既定のカラー パレットを示します。

パレットパレットの色

"gem" — ライト テーマの既定値

R2025a より前: ほとんどのプロットで、これらの色が既定で使用されます。

Sample of the "gem" color palette

"glow" — ダーク テーマの既定値

Sample of the "glow" color palette

orderedcolors 関数と rgb2hex 関数を使用すると、これらのパレットの RGB 3 成分および 16 進数カラー コードを取得できます。たとえば、"gem" パレットの RGB 3 成分を取得し、16 進数カラー コードに変換します。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

R2023b より前: RGB = get(groot,"FactoryAxesColorOrder") を使用して、RGB 3 成分を取得します。

R2024a より前: H = compose("#%02X%02X%02X",round(RGB*255)) を使用して、16 進数カラー コードを取得します。

この プロパティ は読み取り専用です。

関数 uistyle を使用して作成されて追加されたスタイルの構成。n 行 3 列の table 配列として返されます。table 配列の各行は、ドロップダウン コンポーネントに現在適用されているスタイルに対応します。引き続き追加されたスタイルには、スタイル順序番号 n+1 が付与されます。Target 列と TargetIndex 列は、スタイルが追加されたコンポーネントの部分を示します。Style 列は、スタイルのクラス名を示します。

removeStyle 関数を使用してドロップダウン コンポーネントからスタイルを削除する場合に、このプロパティを使用します。

例: スタイルの削除

まず、2 つのスタイルをドロップダウン コンポーネントに追加します。

fig = uifigure;
fig.Position = [100 100 300 250];
dd = uidropdown(fig);

s1 = uistyle("FontColor","blue");
s2 = uistyle("FontColor","red");

addStyle(dd,s1,"item",1);
addStyle(dd,s2,"item",[2 3 4]);

Drop-down list with four items. The first item has a blue font color and the last three items have a red font color.

dd.StyleConfigurations をクエリすると、MATLAB は 2 行 3 列の table 配列を返します。最初に青のフォント スタイルがコンポーネントに追加されたため、青のフォント スタイルの順序番号は 1 になります。レベル スタイルの TargetIndex{[1]} は、そのスタイルがコンポーネントの最初の項目に適用されたことを示します。同様に、2 番目のスタイルがコンポーネントの最後の 3 つの項目に追加されました。

dd.StyleConfigurations
ans =

  2×3 table

         Target    TargetIndex              Style          
         ______    ___________    _________________________

    1     item      {[    1]}     1×1 matlab.ui.style.Style
    2     item      {[2 3 4]}     1×1 matlab.ui.style.Style

スタイル順序番号 2 を指定して、ドロップダウン コンポーネントに追加された 2 番目のスタイルを削除します。コンポーネントの外観が更新され、最初のスタイルのみが使用されます。

removeStyle(dd,2)

Drop-down list with four items. The first item has a blue font color and the last three items have a black font color.

対話機能

可視性の状態。'on' または 'off' として指定するか、数値または logical の 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' — オブジェクトを表示します。

  • 'off' — オブジェクトを削除せずに非表示にします。非表示の UI コンポーネントのプロパティには引き続きアクセスできます。

アプリの起動を高速化するには、起動時に表示する必要のないすべての UI コンポーネントの Visible プロパティを 'off' に設定します。

ドロップダウン コンポーネントの編集可否の状態。'off' または 'on'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

Enable プロパティ値が 'off' である場合、編集可否のプロパティ値が 'on' でもアプリ ユーザーはドロップダウン コンポーネントのテキストを変更できません。

操作可能状態。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は、matlab.lang.OnOffSwitchState 型の on/off の logical 値として保存されます。

  • このプロパティを 'on' に設定すると、アプリ ユーザーはコンポーネントを操作できるようになります。

  • このプロパティを 'off' に設定すると、コンポーネントはグレー表示になり、アプリ ユーザーはコンポーネントを操作できず、コンポーネントはコールバックをトリガーしないことが示されます。

ツールヒント。文字ベクトル、文字ベクトルの cell 配列、string 配列、または 1 次元の categorical 配列として指定します。このプロパティを使用して、実行時にユーザーがポインターをコンポーネントに合わせるとメッセージが表示されるようにします。コンポーネントが無効になっている場合でも、ツールヒントは表示されます。複数行のテキストを表示するには、文字ベクトルの cell 配列または string 配列を指定します。配列の各要素は、テキストの各行になります。このプロパティを categorical 配列として指定した場合、MATLAB はカテゴリの完全なセットではなく、配列内の値を使用します。

コンテキスト メニュー。関数 uicontextmenu を使用して作成された ContextMenu オブジェクトとして指定します。このプロパティは、コンポーネントを右クリックしたときにコンテキスト メニューを表示するために使用します。

位置

親を基準にしたドロップダウン コンポーネントの位置とサイズ。ベクトル [left bottom width height] として指定します。次の表で、ベクトルの各要素について説明します。

要素説明
left親コンテナーの内側左端からドロップダウン コンポーネントの外側左端までの距離
bottom親コンテナーの内側下端からドロップダウン コンポーネントの外側下端までの距離
widthドロップダウン コンポーネントの外側の右端と左端の間の距離
heightドロップダウン コンポーネントの外側の上端と下端の間の距離

すべての測定単位はピクセルです。

Position の値の基準は、親コンテナーの "描画可能領域" です。描画可能領域は、コンテナーの境界線の内側にある領域で、メニュー バーやタイトルなどの装飾が占める領域は含まれません。

例: [100 100 100 22]

ドロップダウン コンポーネントの内部位置とサイズ。[left bottom width height] として指定します。位置の値は、親コンテナーを基準とします。すべての測定単位はピクセルです。このプロパティ値は、ドロップダウン コンポーネントの Position と同一です。

この プロパティ は読み取り専用です。

ドロップダウン コンポーネントの外部位置とサイズ。[left bottom width height] として返されます。位置の値は、親コンテナーを基準とします。すべての測定単位はピクセルです。このプロパティ値は、ドロップダウン コンポーネントの Position と同一です。

レイアウト オプション。GridLayoutOptions オブジェクトとして指定します。このプロパティは、グリッド レイアウト コンテナーの子であるコンポーネントのオプションを指定します。コンポーネントがグリッド レイアウト コンテナーの子ではない場合 (たとえば、Figure またはパネルの子である場合) は、このプロパティは空で、効果はありません。しかし、コンポーネントがグリッド レイアウト コンテナーの子である場合は、GridLayoutOptions オブジェクトの Row プロパティおよび Column プロパティを設定して、グリッドの目的の行と列にコンポーネントを配置することができます。

たとえば、次のコードはドロップダウンを親グリッドの 3 行目の 2 列目に配置します。

g = uigridlayout([4 3]);
dd = uidropdown(g);
dd.Layout.Row = 3;
dd.Layout.Column = 2;

ドロップダウンが複数の行または列にまたがるようにするには、Row または Column プロパティを 2 要素のベクトルとして指定します。たとえば、次のドロップダウンは 2 列目から 3 列目にまたがります。

dd.Layout.Column = [2 3];

コールバック

値が変更されたときのコールバック。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

このコールバック関数は、ドロップダウン リストから別のオプションを選択するときに実行されます。Value プロパティがプログラムにより変更される場合には実行されません。

このコールバック関数は、ユーザーのドロップダウン操作に関する特定の情報にアクセスできます。MATLAB は、この情報を ValueChangedData オブジェクトに格納して、2 番目の引数としてコールバック関数に渡します。App Designer では、引数は event と呼ばれます。ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.PreviousValue はドロップダウンの直前の値を返します。ValueChangedData オブジェクトは、文字ベクトルとして指定されているコールバック関数では使用できません。

次の表に、ValueChangedData オブジェクトのプロパティを示します。

プロパティ
Valueアプリ ユーザーによる最新操作の後のドロップダウン コンポーネントの値
PreviousValueアプリ ユーザーによる最新操作の前のドロップダウン コンポーネントの値
Edited

ドロップダウン コンポーネントに新しい値を入力した結果としてコールバックが実行されたかどうかを示す logical 値。

  • 0 (false) — アプリ ユーザーがドロップダウン コンポーネント Items プロパティの要素を選択または入力した場合。

  • 1 (true) — アプリ ユーザーがドロップダウン コンポーネントの Items プロパティの要素でない値を入力した場合。

ValueIndexアプリ ユーザーによる最新操作の後の項目内のドロップダウン コンポーネント値のインデックス
PreviousValueIndexアプリ ユーザーによる最新操作の前の項目内のドロップダウン コンポーネント値のインデックス
Sourceコールバックを実行するコンポーネント
EventName'ValueChanged'

コールバックの記述の詳細については、App Designer のコールバックを参照してください。

ドロップダウン メニューを開くときのコールバック。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

このプロパティは、ユーザーがクリックしてドロップダウン メニューを開いたときに実行するコールバック関数を指定します。このコールバックの使用方法として、ドロップダウン メニューのエントリのリストの動的な更新があります。

このコールバック関数は、ユーザーのドロップダウン操作に関する特定の情報にアクセスできます。MATLAB は、この情報を DropDownOpeningData オブジェクトに格納して、2 番目の引数としてコールバック関数に渡します。App Designer では、引数は event と呼ばれます。ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.Source は、ユーザーの操作に応じてコールバックをトリガーする DropDown オブジェクトを返します。DropDownOpeningData オブジェクトは、文字ベクトルとして指定されているコールバック関数では使用できません。

次の表に、DropDownOpeningData オブジェクトのプロパティを示します。

プロパティ
Sourceコールバックを実行するコンポーネント
EventName'DropDownOpening'

コールバックの記述の詳細については、App Designer のコールバックを参照してください。

クリック時のコールバック。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

このコールバック関数は、ユーザーがドロップダウン コンポーネント内の任意の位置をクリックしたときに実行されます。

このコールバック関数は、ユーザーのドロップダウン コンポーネント操作に関する特定の情報にアクセスできます。MATLAB は、この情報を ClickedData オブジェクトに格納して、2 番目の引数としてコールバック関数に渡します。App Designer では、引数は event と呼ばれます。ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.InteractionInformation は、ユーザーがクリックしたドロップダウン コンポーネント内の位置に関する情報を返します。ClickedData オブジェクトは、文字ベクトルとして指定されているコールバック関数では使用できません。

次の表は、ClickedData オブジェクトのプロパティを示しています。

プロパティ
InteractionInformation

アプリ ユーザーがクリックしたコンポーネント内の位置に関する情報。この情報は、次のプロパティをもつオブジェクトとして保存されます。

  • Item

  • ScreenLocation

  • Location

ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.InteractionInformation.Item は、ユーザーがドロップダウン コンポーネントのどの項目をクリックしたかを返します。

Sourceコールバックを実行するコンポーネント
EventName'Clicked'

次の表に、ドロップダウン コンポーネントに関連付けられている InteractionInformation オブジェクトのプロパティを示します。

プロパティ
Item

クリックされたドロップダウン コンポーネント項目のインデックス。スカラーとして返されます。

ユーザーがクリックしたドロップダウン コンポーネントの領域が項目に関連付けられていない場合、Item は空の配列になります。

Location

ドロップダウン コンポーネントの親コンテナーの左下隅を基準とした、ユーザーのクリック位置。[x y] の形式の 2 要素ベクトルとして返されます。

x の値は、親コンテナーの左端からクリック位置までの水平距離を表します。y の値は、親コンテナーの下端からクリック位置までの垂直距離を表します。距離はピクセル単位で測定されます。

ScreenLocation

プライマリ ディスプレイの左下隅を基準とした、ユーザーのクリック位置。[x y] の形式の 2 要素ベクトルとして返されます。

x の値は、ディスプレイの左端からクリック位置までの水平距離を表します。y の値は、ディスプレイの下端からクリック位置までの垂直距離を表します。距離はピクセル単位で測定されます。

コールバックの記述の詳細については、App Designer のコールバックを参照してください。

例: ドロップダウン コンポーネントがクリックされたときにデータを表示

食料品を表す項目と、それぞれのコストを表す項目データをもつドロップダウン コンポーネントを作成します。ユーザーがコンポーネントをクリックしたときに実行される、displayCost という名前の ClickedFcn コールバック関数を指定します。displayCost 関数内で次を行います。

  • event.InteractionInformation オブジェクトを使用して、ユーザーが項目をクリックしたかどうかに関する情報にアクセスします。

  • ユーザーが項目 (項目に関連付けられていないドロップダウン コンポーネント内の場所ではない) をクリックすると、項目とそのコストがクエリされます。

  • コマンド ウィンドウで項目とそのコストを表示します。

この例を試すには、次のコードを新しいスクリプトに保存して、実行します。ドロップダウン コンポーネントの項目をクリックして、そのコストを表示します。

fig = uifigure;
dd = uidropdown(fig);
dd.Items = ["Apple","Banana","Orange"];
dd.ItemsData = [1.2,0.5,1.2];
dd.ClickedFcn = @displayCost;

function displayCost(dd,event)
idx = event.InteractionInformation.Item;
if ~isempty(idx)
    fruit = dd.Items(idx);
    cost = dd.ItemsData(idx);
    disp(fruit + " cost $" + cost)
end
end

オブジェクト作成関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、App Designer のコールバックを参照してください。

このプロパティは、MATLAB がオブジェクトを作成するときに実行されるコールバック関数を指定します。MATLAB は CreateFcn コールバックを実行する前に、すべてのプロパティ値を初期化します。CreateFcn プロパティを指定しない場合、MATLAB は既定の作成関数を実行します。

既存のコンポーネントに CreateFcn プロパティを設定しても効果はありません。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、作成中のオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

オブジェクト削除関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、App Designer のコールバックを参照してください。

このプロパティは、MATLAB がオブジェクトを削除するときに実行されるコールバック関数を指定します。MATLAB は、オブジェクトのプロパティを破棄する前に DeleteFcn コールバックを実行します。DeleteFcn プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、削除されるオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

コールバック実行制御

コールバックの割り込み。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off' の値は false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティは実行中のコールバックが割り込み可能かどうかを決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

MATLAB は、コールバック キューを処理するコマンドを実行するたびにコールバックの割り込み動作を判別します。これらのコマンドには、drawnowfigureuifiguregetframewaitforpause があります。

実行中コールバックにこれらのコマンドが含まれていない場合、割り込みは発生しません。MATLAB は、実行中コールバックの実行を先に終了させ、その後に割り込みコールバックを実行します。

実行中コールバックにこれらのいずれかのコマンドが含まれている場合、実行中コールバックを所有するオブジェクトの Interruptible プロパティに応じて割り込みが発生するかどうかが決まります。

  • Interruptible の値が 'off' の場合、割り込みは発生しません。代わりに、割り込みコールバックを所有するオブジェクトの BusyAction プロパティに応じて、割り込みコールバックが破棄されるかコールバック キューに追加されるかが決まります。

  • Interruptible の値が 'on' の場合、割り込みが発生します。MATLAB は、コールバック キューの次回処理時に、実行中コールバックの実行を停止し、割り込みコールバックを実行します。割り込みコールバックが完了した後、MATLAB は実行中だったコールバックの実行を再開します。

メモ

コールバックの割り込みと実行は、以下の状況では動作が異なります。

  • 割り込みコールバックが DeleteFcnCloseRequestFcn または SizeChangedFcn コールバックの場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 実行中のコールバックが関数 waitfor を現在実行している場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 割り込みコールバックが Timer オブジェクトで所有されている場合、Interruptible プロパティの値にかかわらずスケジュールに従ってコールバックが実行されます。

メモ

MATLAB は、割り込みが発生したときにプロパティの状態や表示を保存しません。たとえば、gca コマンドや gcf コマンドから返されたオブジェクトは、別のコールバックを実行するときに変更されている可能性があります。

コールバック キューイング。'queue' または 'cancel' として指定します。BusyAction プロパティは MATLAB による割り込みコールバックの実行の処理方法を決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

BusyAction プロパティによってコールバック キューイングの動作が決まるのは、次の両方の条件を満たす場合のみです。

  • 実行中コールバックに drawnowfigureuifiguregetframewaitforpause などのコールバック キューを処理するコマンドが含まれている。

  • 実行中コールバックを所有するオブジェクトの Interruptible プロパティの値が 'off' である。

これらの条件に当てはまる場合、割り込みコールバックを所有するオブジェクトの BusyAction プロパティに応じて MATLAB による割り込みコールバックの処理方法が決まります。BusyAction プロパティは次の値を取ることができます。

  • 'queue' — 割り込みコールバックをキューに入れ、実行中のコールバックが終了した後に処理されるようにします。

  • 'cancel' — 割り込みコールバックを実行しません。

この プロパティ は読み取り専用です。

削除状態。matlab.lang.OnOffSwitchState 型の on/off logical 値として返されます。

MATLAB は、DeleteFcn コールバックが実行を開始すると、BeingDeleted プロパティを 'on' に設定します。コンポーネント オブジェクトが存在しなくなるまで BeingDeleted プロパティは 'on' に設定されたままです。

クエリや変更の前にオブジェクトが削除されようとしていないか確認するために BeingDeleted プロパティの値をチェックします。

親/子

親コンテナー。Figure オブジェクトまたはその子コンテナー (TabPanelButtonGroupGridLayout) のいずれかとして指定します。コンテナーが指定されていない場合、MATLAB は関数 uifigure を呼び出し、親コンテナーとして使用される新しい Figure オブジェクトを作成します。

オブジェクト ハンドルの可視性。'on''callback' または 'off' として指定します。

このプロパティは、オブジェクトの親がもつ子のリストにおけるそのオブジェクトの可視性を制御します。オブジェクトがその親オブジェクトのリストで、子として可視できない場合、オブジェクト階層の検索またはプロパティのクエリによってオブジェクトを取得する関数は、そのオブジェクトを返しません。これらの関数には、getfindobjclf および close が含まれます。オブジェクトは参照できない場合も有効です。オブジェクトにアクセスできる場合は、そのプロパティを設定および取得して、それをオブジェクトに作用する任意の関数に渡すことができます。

HandleVisibility の値説明
'on' オブジェクトは常に参照できます。
'callback'オブジェクトはコールバック内から、あるいはコールバックにより呼び出される関数から参照できます。しかし、コマンド ラインから呼び出される関数からは参照できません。このオプションを使用すると、コマンド ラインからのオブジェクトへのアクセスがブロックされますが、コールバック関数からのアクセスは許可されます。
'off'オブジェクトは常に参照できません。このオプションは、他の関数による UI の意図しない変更を防止するために役立ちます。HandleVisibility'off' に設定すると、その関数の実行中にオブジェクトが一時的に非表示になります。

識別子

この プロパティ は読み取り専用です。

グラフィックス オブジェクトのタイプ。'uidropdown' として返されます。

オブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。オブジェクトの識別子として機能する一意の Tag 値を指定できます。コードの他の部分からオブジェクトにアクセスする必要がある場合、関数 findobj を使用して Tag 値に基づいてオブジェクトを検索できます。

ユーザー データ。任意の MATLAB 配列として指定します。たとえば、スカラー、ベクトル、行列、cell 配列、文字配列、table、または構造体を指定できます。このプロパティを使用して、任意のデータをオブジェクトに保存します。

App Designer を使用している場合は、UserData プロパティを使用する代わりに、アプリでパブリック プロパティまたはプライベート プロパティを作成してデータを共有します。詳細については、App Designer アプリ内でのデータの共有を参照してください。

オブジェクト関数

addStyleUI コンポーネントにスタイルを追加
removeStyleUI コンポーネントからスタイルを削除
focusUI コンポーネントにフォーカスを移動

すべて折りたたむ

UI Figure 内にドロップダウン コンポーネントを作成し、項目を指定します。

fig = uifigure;
dd = uidropdown(fig,"Items",["Red","Yellow","Blue","Green"]);

UI figure with a drop-down component. The value of the drop-down component is "Red".

選択された項目に関連付けられている値を調べます。ItemsData プロパティが空の場合 (既定の設定)、ドロップダウン コンポーネントの Value プロパティには、選択された項目の Items プロパティに表示される名前が格納されます。

value = dd.Value
value =

    'Red'

ItemsData プロパティを指定して、ドロップダウン コンポーネントの個々の項目に 16 進数カラー コードを関連付けます。

dd.ItemsData = ["#F00" "#FF0" "#00F" "#0F0"];

ItemsData が空でない場合、ドロップダウン コンポーネントの Value プロパティには、選択された項目に関連付けられているデータが格納されます。

value = dd.Value
value =

    "#F00"

R2023a 以降

3 つの項目を含むドロップダウン UI コンポーネントを作成します。

fig = uifigure;
dd = uidropdown(fig,"Items",["Good","Fair","Poor"]);

背景色スタイルを 3 つ作成します。

s1 = uistyle("BackgroundColor","#77AC30");
s2 = uistyle("BackgroundColor","#EDB120");
s3 = uistyle("BackgroundColor","#F77A8F");

スタイルをドロップダウン コンポーネントの項目に追加して、それらの背景色を変更します。

addStyle(dd,s1,"item",1);
addStyle(dd,s2,"item",2);
addStyle(dd,s3,"item",3);

項目の背景色が更新され、選択された項目のスタイルがコンポーネントの外観に反映されます。このスタイルでは、ユーザーが項目をポイントしたときに表示される色は変わりません。

Drop-down UI component with three items. Each item has a different background color: The "Good" item is green, the "Fair" item is yellow, and the "Poor" item is red. The "Fair" item is selected and appears at the top of the component as yellow. The mouse cursor is pointing to the "Fair" item in the list, so that item is highlighted in blue.

アプリ ユーザーがドロップダウン リストから選択するとプロットされたラインの色が変わるアプリを作成します。

plotOptions.m という名前のファイルで、アプリを実装する関数を作成します。

  • UI Figure およびグリッド レイアウト マネージャーを作成してアプリをレイアウトします。

  • グリッド レイアウト マネージャーで UI 座標軸とドロップダウン コンポーネントを作成します。

  • 選択されたドロップダウン コンポーネントの項目に基づいてプロットの色を変更する updatePlot という名前のコールバック関数を記述し、その関数を ValueChangedFcn コールバック プロパティに割り当てます。コールバックの詳細については、プログラムで作成したアプリ用のコールバックの作成を参照してください。

function plotOptions
fig = uifigure;
g = uigridlayout(fig);
g.RowHeight = {'1x','fit','1x'};
g.ColumnWidth = {'1x','fit'};

ax = uiaxes(g);
ax.Layout.Row = [1 3];
ax.Layout.Column = 1;

x = linspace(-2*pi,2*pi);
y = sin(x);
p = plot(ax,x,y,"Color","#F00");

dd = uidropdown(g, ...
    "Items",["Red","Yellow","Blue","Green"], ...
    "ItemsData",["#F00" "#FF0" "#00F" "#0F0"], ...
    "ValueChangedFcn",@(src,event) updatePlot(src,p));
dd.Layout.Row = 2;
dd.Layout.Column = 2;
end

function updatePlot(src,p)
val = src.Value;
p.Color = val;
end

関数 plotOptions を実行します。ドロップダウン リストから項目を選択すると、プロットの色が変わります。

plotOptions

Figure contains an axes object and an object of type uigridlayout. The axes object contains an object of type line.

ユーザーが表示するイメージを選択できるアプリを作成します。このアプリには編集可能なドロップダウン コンポーネントが含まれるため、ユーザーによる既存の項目の選択とユーザーによる独自の値の入力を処理するコードを記述します。

imageApp.m という名前のファイルで、アプリを実装する関数を作成します。

  • UI Figure およびグリッド レイアウト マネージャーを作成してアプリをレイアウトします。

  • グリッド レイアウト マネージャーで編集可能なドロップダウン コンポーネントとイメージ コンポーネントを作成します。

  • 選択されたドロップダウン コンポーネントの項目に基づいてイメージを変更する updateImage という名前のコールバック関数を記述し、その関数を ValueChangedFcn コールバック プロパティに割り当てます。コールバック イベント データをクエリして、新しい値が既存の項目から選択された値であるかユーザーが入力した値であるかをチェックし、ユーザーが入力した値であれば値を検証します。コールバックの詳細については、プログラムで作成したアプリ用のコールバックの作成を参照してください。

function imageApp
fig = uifigure;
g = uigridlayout(fig,[2 3]);
g.RowHeight = {22,'1x'};
g.ColumnWidth = {'1x','fit','1x'};

dd = uidropdown(g, ...
    "Editable","on", ...
    "Items",["peppers.png","street1.jpg"]);
dd.Layout.Row = 1;
dd.Layout.Column = 2;

im = uiimage(g,"ImageSource","peppers.png");
im.Layout.Row = 2;
im.Layout.Column = [1 3];

dd.ValueChangedFcn = @(src,event)updateImage(src,event,im,fig);
end

function updateImage(src,event,im,fig)
val = src.Value;
if event.Edited && ~exist(val,"file")
    im.ImageSource = "";
    uialert(fig,"Enter a file on the MATLAB path","Invalid Image")
else
    im.ImageSource = val;
end
end

関数 imageApp を実行し、既存の項目を選択するか独自のイメージのパスを入力してイメージを更新します。

UI figure window with a drop-down list and an image of cars on a street. The drop-down list has the text "street2.jpg" and a cursor.

バージョン履歴

R2016a で導入

すべて展開する

参考

関数

ツール