uimenu
メニューまたはメニュー項目の作成
説明
m = uimenu は現在の Figure にメニューを作成し、Menu オブジェクトを返します。利用可能な Figure がない場合は、MATLAB® が関数 figure を呼び出して Figure を作成します。
m = uimenu( は、指定された親コンテナーにメニューを作成します。親コンテナーには、parent)Figure オブジェクトまたは別の Menu オブジェクトを指定できます。
m = uimenu(___, は、1 つ以上の名前と値の引数で指定したプロパティ値をもつメニューを作成します。前述の構文のいずれかを使用して、名前と値の引数を指定します。Name,Value)
例
既定のメニュー バーが表示される Figure を作成します。メニューとメニュー項目を追加します。
f = figure('Toolbar','none'); m = uimenu('Text','Options'); mitem = uimenu(m,'Text','Reset');

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

メニューとメニュー項目は次の方法でキーボードを使用して操作できます。
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

入力引数
名前と値の引数
オプションの引数のペアを 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+
acceleratorMacintosh システム: Command+
acceleratorLinux® システム: Ctrl+
accelerator
アクセラレータを使用する際の注意事項
アクセラレータのキー シーケンスを入力する場合、アプリ ウィンドウはフォーカス内になければなりません。
アクセラレータは最上位メニューで使用できません。
アクセラレータはメニュー項目が次のすべての条件を満たす場合にのみ機能します。
サブメニュー項目が含まれていない。
コールバック関数を実行する。
Visibleプロパティが'on'に設定されている。そのアクセラレータの値が、同じアプリ内の異なるアクティブなメニュー項目にまだ代入されていない。
メニューで選択されているコールバック関数。次の値のいずれかとして指定します。
関数ハンドル。
最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。
有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。
コールバックのプロパティ値を関数ハンドル、cell 配列または文字ベクトルとして指定する方法の詳細については、コールバック関数の指定を参照してください。
コールバックは、メニュー項目の位置および操作のタイプに従って応答します。
メニューを左クリックすると、メニューが展開し、そのコールバックがトリガーされます。
いずれかのメニューが展開しているときに他の親メニュー (または最上位メニュー) をポイントすると、そのメニューが展開し、そのコールバックがトリガーされます。
メモ
メニュー項目を動的に変更するためにコールバックを使用しないでください。コールバックでメニュー項目の削除、追加、および置き換えを行うと、メニューが空白になることがあります。代わりに、Visible プロパティを使用してメニュー項目の非表示と表示を設定します。また、Enable プロパティを設定してメニュー項目の有効化や無効化を行うこともできます。メニュー項目を完全に埋めるには、これらの項目を削除して、コールバックの外部に作成してください。
コンテキスト メニューに関連付けられたメニュー
Figure ウィンドウの上部にあるメニュー項目ではなくコンテキスト メニューにメニュー コンポーネントが関連付けられている場合、このコールバック関数は、ユーザーのアプリ操作に関する特定の情報にアクセスできます。MATLAB は、この情報を MenuSelectedData オブジェクトに格納して、2 番目の引数としてコールバック関数に渡します。App Designer では、引数は event という名前です。ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.ContextObject は、関連付けられているコンテキスト メニューを開くためにユーザーが右クリックしたコンポーネントに関する情報を返します。
メモ
任意の Menu オブジェクトに対して MenuSelectedFcn コールバックを指定できます。ただし、コールバック イベント データの MenuSelectedData オブジェクトは、メニューが属しているコンテキスト メニューが UI コンポーネント (Axes オブジェクトや Line オブジェクトなどのグラフィックス オブジェクトではない) に関連付けられているか、UI コンポーネントのみを含むコンテナーに関連付けられている場合にのみ使用できます。
次の表に、MenuSelectedData オブジェクトのプロパティを示します。
| プロパティ | 値 |
|---|---|
ContextObject | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクト |
InteractionInformation | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたコンポーネント内の位置に関する情報。この情報は、 たとえば、 |
Source | コールバックを実行するコンテキスト メニュー オブジェクト |
EventName | 'MenuSelected' |
次の表に、InteractionInformation オブジェクトのプロパティを示します。プロパティは、アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクトによって異なります。
ContextObject | InteractionInformation プロパティ | 値 |
|---|---|---|
| 任意 | Location |
|
ScreenLocation | プライマリ ディスプレイの左下隅を基準とした、ユーザーが右クリックした位置。
| |
Table | DisplayRow | ユーザーの右クリック位置に視覚的に表示されているテーブルの行。数値スカラーとして返されます。 ユーザーがテーブルを並べ替えていない場合、 |
DisplayColumn | ユーザーの右クリック位置に視覚的に表示されているテーブルの列。数値スカラーとして返されます。 ユーザーがテーブルを再配列していない場合、 | |
Row | ユーザーの右クリック位置に対応する元のテーブル データの行。数値スカラーとして返されます。 ユーザーがテーブルを並べ替えていない場合、 | |
Column | ユーザーの右クリック位置に対応する元のテーブル データの列。数値スカラーとして返されます。 ユーザーがテーブルを再配列していない場合、 | |
RowHeader | ユーザーがテーブルの行ヘッダーを右クリックしたかどうか。logical 0 (false) または logical 1 (true) として返されます。 | |
ColumnHeader | ユーザーがテーブルの列ヘッダーを右クリックしたかどうか。logical 0 (false) または logical 1 (true) として返されます。 | |
Tree | Node | 右クリックされたノード。 ユーザーが右クリックしたツリーの領域がノードに関連付けられていない場合、 |
Level | 右クリックされたノードのレベル。数値スカラーとして返されます。 ユーザーが右クリックしたツリーの領域がノードに関連付けられていない場合、 | |
ListBox | 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 より前に導入Tooltip プロパティを指定して、figure 関数を使用して作成されたアプリ内のメニューのツールヒントを作成します。
MenuSelectedFcn コールバックは、コールバックがコンテキスト メニュー内のメニュー項目に対して定義されていて、そのコンテキスト メニューが UI コンポーネントに関連付けられている場合に、追加のイベント データをもちます。このデータを使用して、アプリでコンテキスト メニューをカスタマイズおよび共有します。
| イベント データ プロパティ | 説明 |
|---|---|
ContextObject | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクト |
InteractionInformation | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたコンポーネント内の位置 (テーブルのセルなど) に関する情報 |
R2017b 以降、メニュー ラベルを指定する Label プロパティの使用は推奨されなくなりました。代わりに、Text プロパティを使用してください。プロパティ値は同じです。
R2017b 以降、メニューの配置を指定する Position プロパティの使用は推奨されなくなりました。代わりに、Children プロパティを変更してメニュー項目を並べ替えてください。詳細については、プログラミングによるアプリのレイアウトを参照してください。
R2017b 以降、メニューで選択されているコールバックを割り当てる Callback プロパティの使用は推奨されなくなりました。代わりに、MenuSelectedFcn プロパティを使用してください。プロパティ値は同じです。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)


