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] ダイアログ ボックスが開きます。

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

まず、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'

'O&pen Selection'

'&Save && Go'

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

例: mitem.Accelerator = "H"

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

  • Windows® システム: Ctrl+accelerator

  • Macintosh システム: Command+accelerator

  • Linux® システム: Ctrl+accelerator

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

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

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

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

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

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

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

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

  • 関数ハンドル。

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

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

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

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

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

メモ

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

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

区切りのライン モード。'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 より前に導入