Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

uimenu

メニューまたはメニュー項目の作成

説明

m = uimenu は現在の Figure にメニューを作成し、Menu オブジェクトを返します。利用可能な Figure がない場合は、MATLAB® が関数 figure を呼び出して Figure を作成します。

m = uimenu(Name,Value) は、1 つ以上の名前と値のペアの引数を使用してメニューのプロパティ値を指定します。

m = uimenu(parent) は、指定された親コンテナーにメニューを作成します。親コンテナーには、関数 figure または関数 uifigure で作成された Figure か、あるいは別の Menu オブジェクトを指定できます。uimenu のプロパティの値は、関数 figure で作成されたアプリと関数 uifigure で作成されたアプリで多少異なります。詳細については、名前と値の引数を参照してください。

m = uimenu(parent,Name,Value) は、親コンテナーと 1 つ以上のプロパティ値を指定します。

すべて折りたたむ

既定のメニュー バーが表示される Figure を作成します。メニューとメニュー項目を追加します。

f = figure('Toolbar','none');
m = uimenu('Text','Options');
mitem = uimenu(m,'Text','Reset');

A figure window with a menu bar. The menu items are "File", "Edit", "View", "Insert", "Tools", "Desktop", "Window", "Help", and "Options". The "Options" item is selected, and displays a drop-down with a "Reset" option.

キーボード ショートカットを含むメニュー項目をメニュー バーに追加し、メニュー項目を選択すると実行されるコールバックを定義します。

まず、importmenu.m というプログラム ファイルを作成します。プログラム ファイル内で次を行います。

  • Figure を作成します。

  • [Import] というメニューを追加します。テキスト ラベルを '&Import' と指定して、メニューのニーモニックのキーボード ショートカットを作成します。

  • メニュー項目を作成し、ニーモニックとアクセラレータのキーボード ショートカットを指定します。

  • ユーザーがメニュー項目をクリックするかニーモニックまたはアクセラレータのキーボード ショートカットを使用したときに実行される MenuSelectedFcn コールバックを定義します。

プログラム ファイルを実行します。

function importmenu
fig = uifigure;
m = uimenu(fig,'Text','&Import');
 
mitem = uimenu(m,'Text','&Text File');
mitem.Accelerator = 'T';
mitem.MenuSelectedFcn = @MenuSelected;
 
    function MenuSelected(src,event)
        file = uigetfile('*.txt');
    end
 
end

A menu bar with an "Import" item with a "Text File" sub-item. The "I" in "Import" and the "T" in "Text File" are underlined. The Ctrl+T keyboard shortcut is displayed to the right of the "Text File" item.

メニューとメニュー項目は次の方法でキーボードを使用して操作できます。

  • Alt+I を押すと、[Import] メニューが選択されます。

  • Alt+I+T を押すと、[Text File] メニュー項目が選択されてコールバックが実行されます。

  • アクセラレータ Ctrl+T を使用すると、[Text File] メニュー項目が選択されてコールバックが実行されます。

[Text File] メニュー項目を選択すると、拡張子のフィールドがテキスト ファイルにフィルター処理された状態で [Select File to Open] ダイアログ ボックスが開きます。

File dialog box. The file extension filer drop-down list has the option "(*.txt.)" selected.

オンとオフを切り替えて座標軸にグリッドを表示するかどうかを選択できるオンの状態のメニュー項目を作成します。コールバックをプッシュ ボタンと共有して、ボタンをクリックしたときにもグリッドの表示と非表示が切り替わるようにします。

まず、plotOptions.m というプログラム ファイルを作成します。プログラム ファイル内で次を行います。

  • プッシュ ボタンとグリッドを表示する座標軸を含む Figure を作成します。

  • ニーモニックを含むメニューとメニュー項目を追加します。メニュー項目をオンにするように指定します。

  • ユーザーがメニュー項目を操作したときにグリッドの表示と非表示を切り替える MenuSelectedFcn コールバックを定義します。

  • メニュー項目と同じコールバック関数を使用する ButtonPushedFcn を定義します。

プログラム ファイルを実行します。

function plotOptions
fig = uifigure;
ax = uiaxes(fig);
grid(ax);
btn = uibutton(fig,'Text','Show Grid');
btn.Position = [155 325 100 20];

m = uimenu(fig,'Text','&Plot Options');
mitem = uimenu(m,'Text','Show &Grid','Checked','on');
mitem.MenuSelectedFcn = @ShowGrid;
btn.ButtonPushedFcn = @ShowGrid;

    function ShowGrid(src,event)
        grid(ax);
        if strcmp(mitem.Checked,'on')
            mitem.Checked = 'off';
        else
            mitem.Checked = 'on';
        end
    end
end

An app with a menu bar, button, and set of axes. The "Show Grid" menu item has a checked check box to the left of the text.

入力引数

すべて折りたたむ

親コンテナー。関数 figure または関数 uifigure で作成された Figure オブジェクトか、別の Menu オブジェクト、または ContextMenu オブジェクトとして指定します。親コンテナーを指定しない場合、MATLAB は figure を呼び出して Figure を作成し、その Figure のメニュー バーにメニューを配置します。親を既存の Menu オブジェクトとして指定して、メニュー項目をメニューに追加するか、またはメニュー項目を入れ子にします。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: m = uimenu('Text','Open') は、メニューを作成してラベルを 'Open' に設定します。

メモ

以下にリストするプロパティは、利用できるプロパティの一部です。完全なリストについては、Menu のプロパティ を参照してください。

メニュー ラベル。文字ベクトルまたは string スカラーとして指定します。このプロパティはメニュー (またはメニュー項目) に表示されるラベルを指定します。

予約語 'default''remove' および 'factory' (大文字小文字が区別されます) の使用は避けてください。予約語を使用しなければならない場合は、その単語の前にバックスラッシュ文字を指定します。たとえば、'default''\default' として指定します。

ラベルのテキストにアンパサンド文字 (&) を使用して、ニーモニックのキーボード ショートカット (Alt+mnemonic) を指定できます。Alt を押すと、メニューにはアンパサンドの次に来る文字が下線付きで表示されます。メニュー項目は Alt キーを押したまま表示される文字を入力すると選択できます。

ニーモニックを使用するには、アプリ内で定義するすべてのメニューおよびメニュー項目のニーモニックを指定しなければなりません。ニーモニックを一部のメニューまたはメニュー項目に対してのみ定義する場合は、Alt キーを押しても効果はありません。

次の表にいくつか例を示します。

テキスト値ニーモニック ヒント付きメニュー ラベル
'&Open Selection'

Open Selection menu label. The "O" in "Open" is underlined.

'O&pen Selection'

Open Selection menu label. The "p" in "Open" is underlined.

'&Save && Go'

Open Selection menu label. The "S" in "Save & Go" is underlined.

キーボード ショートカット。1 文字、または 1 文字を含む string として指定します。このプロパティを使用して、メニュー項目を選択するキーボード ショートカットを定義します。

例: mitem.Accelerator = "H"

アクセラレータの値を指定すると、ユーザーはマウスを使用する代わりに、文字と別のキーを押すことによってメニュー項目を選択できます。キーは、使用するプラットフォームに依存します。

  • Windows® システム: Ctrl+accelerator

  • Macintosh システム: Command+accelerator

  • Linux® システム: Ctrl+accelerator

アクセラレータを使用する際の注意事項

  • アクセラレータのキー シーケンスを入力する場合、アプリ ウィンドウはフォーカス内になければなりません。

  • アクセラレータは最上位メニューで使用できません。

  • アクセラレータはメニュー項目が次のすべての条件を満たす場合にのみ機能します。

    • サブメニュー項目が含まれていない。

    • コールバック関数を実行する。

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

    • そのアクセラレータの値が、同じアプリ内の異なるアクティブなメニュー項目にまだ代入されていない。

メニューで選択されているコールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

コールバックは、メニュー項目の位置および操作のタイプに従って応答します。

  • メニューを左クリックすると、メニューが展開し、そのコールバックがトリガーされます。

  • いずれかのメニューが展開しているときに他の親メニュー (または最上位メニュー) をポイントすると、そのメニューが展開し、そのコールバックがトリガーされます。

メモ

メニュー項目を動的に変更するためにコールバックを使用しないでください。コールバックでメニュー項目の削除、追加、および置き換えを行うと、メニューが空白になることがあります。代わりに、Visible プロパティを使用してメニュー項目の非表示と表示を設定します。また、Enable プロパティを設定してメニュー項目の有効化や無効化を行うこともできます。メニュー項目を完全に埋めるには、これらの項目を削除して、コールバックの外部に作成してください。

コンテキスト メニューに関連付けられたメニュー

Figure ウィンドウの上部にあるメニュー項目ではなくコンテキスト メニューにメニュー コンポーネントが関連付けられている場合、このコールバック関数は、ユーザーのアプリ操作に関する特定の情報にアクセスできます。MATLAB は、この情報を MenuSelectedData オブジェクトに格納して、2 番目の引数としてコールバック関数に渡します。App Designer では、引数は event という名前です。ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.ContextObject は、関連付けられているコンテキスト メニューを開くためにユーザーが右クリックしたコンポーネントに関する情報を返します。

メモ

任意の Menu オブジェクトに対して MenuSelectedFcn コールバックを指定できます。ただし、コールバック イベント データの MenuSelectedData オブジェクトは、メニューが属しているコンテキスト メニューが以下の両方の条件を満たしている場合にのみ使用可能です。

  • コンテキスト メニューが uifigure ベースのアプリ (App Designer で作成されたアプリなど) に関連付けられている。

  • Axes オブジェクトや Line オブジェクトなどのグラフィックス オブジェクトではなく UI コンポーネントにコンテキスト メニューが関連付けられている。

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

プロパティ
ContextObjectアプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクト
InteractionInformation

アプリ ユーザーがコンテキスト メニューを開くために右クリックしたコンポーネント内の位置に関する情報。この情報は、ContextObject の値に応じて異なるプロパティをもつオブジェクトとして格納されます。

たとえば、ContextObjectTable オブジェクトの場合、InteractionInformation は、ユーザーが右クリックしたテーブル内の行と列に関する情報を格納します。InteractionInformation がもつことのできるプロパティの詳細については、次の表を参照してください。

Sourceコールバックを実行するコンテキスト メニュー オブジェクト
EventName'MenuSelected'

次の表に、InteractionInformation オブジェクトのプロパティを示します。プロパティは、アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクトによって異なります。

ContextObjectInteractionInformation プロパティ
任意Location

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

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

ScreenLocation

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

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

TableDisplayRow

ユーザーの右クリック位置に視覚的に表示されているテーブルの行。数値スカラーとして返されます。

ユーザーがテーブルを並べ替えていない場合、DisplayRow の値は Row と同じになります。ユーザーが右クリックしたテーブル UI コンポーネントの領域が行に関連付けられていない場合、DisplayRow は空の配列になります。

DisplayColumn

ユーザーの右クリック位置に視覚的に表示されているテーブルの列。数値スカラーとして返されます。

ユーザーがテーブルを再配列していない場合、DisplayColumn の値は Column と同じになります。ユーザーが右クリックしたテーブル UI コンポーネントの領域が列に関連付けられていない場合、DisplayColumn は空の配列になります。

Row

ユーザーの右クリック位置に対応する元のテーブル データの行。数値スカラーとして返されます。

ユーザーがテーブルを並べ替えていない場合、Row の値は DisplayRow と同じになります。ユーザーが右クリックしたテーブル UI コンポーネントの領域が行に関連付けられていない場合、Row は空の配列になります。

Column

ユーザーの右クリック位置に対応する元のテーブル データの列。数値スカラーとして返されます。

ユーザーがテーブルを再配列していない場合、Column の値は DisplayColumn と同じになります。ユーザーが右クリックしたテーブル UI コンポーネントの領域が列に関連付けられていない場合、Column は空の配列になります。

RowHeaderユーザーがテーブルの行ヘッダーを右クリックしたかどうか。logical 0 (false) または logical 1 (true) として返されます。
ColumnHeaderユーザーがテーブルの列ヘッダーを右クリックしたかどうか。logical 0 (false) または logical 1 (true) として返されます。
TreeNode

右クリックされたノード。TreeNode オブジェクトとして返されます。

ユーザーが右クリックしたツリーの領域がノードに関連付けられていない場合、Node は空の配列になります。

Level

右クリックされたノードのレベル。数値スカラーとして返されます。Tree オブジェクトを直接の親とするノードがレベル 1、レベル 1 のノードを親とするノードがレベル 2 となり、以下同様に続きます。

ユーザーが右クリックしたツリーの領域がノードに関連付けられていない場合、Level は空の配列になります。

ListBoxItem

右クリックされたリスト ボックス項目のインデックス。数値スカラーとして返されます。

ユーザーが右クリックしたリスト ボックスの領域が項目に関連付けられていない場合、Item は空の配列になります。

区切りのライン モード。'off' または 'on'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティを 'on' に設定すると、メニュー項目の上に境界線が描画されます。

メモ

メニュー項目が最上位メニュー項目の場合、Separator プロパティは無視されます。

メニュー チェック インジケーター。'off' または 'on'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティを 'on' に設定するには、対応するメニュー項目の次にチェック マークを付けます。'off' に設定すると、チェック マークが外されます。この機能を使用すると、アプリケーションの機能を有効または無効にするメニュー項目の状態を表示できます。

メモ

メニュー項目が次の場合、Checked プロパティは無視されます。

  • 最上位メニュー項目

  • 1 つ以上の子メニュー項目をもつメニュー項目

バージョン履歴

R2006a より前に導入