Main Content

GUIDE アプリのメニューの作成

メモ

GUIDE 環境は将来のリリースで削除される予定です。既存の GUIDE アプリは、GUIDE が削除された後も引き続き MATLAB® で動作しますが、GUIDE での編集はできません。

既存の GUIDE アプリを引き続き編集するには、将来の MATLAB リリースとの互換性維持に役立つ方法について、GUIDE の移行策を参照してください。新しいアプリを対話的に作成する場合は、代わりにApp Designer を使用したアプリ開発を参照してください。

GUIDE を使用して、メニュー バー (プルダウン メニューを含む) と、コンポーネントに付加するコンテキスト メニューを作成できます。メニュー エディターを使用して、どちらのタイプのメニューも作成できます。[ツール] メニューからメニュー エディターにアクセスするか、[メニュー エディター] ボタン をクリックします。

メニュー バー に対してのメニュー

ドロップダウン メニューを作成する場合、GUIDE はメニュー バーにタイトルを追加します。そのメニューに対してユーザーがメニュー項目を作成できます。各メニュー項目は、カスケードするメニュー (サブメニュー) をもつことができ、これらの項目も同様にカスケードするメニューをもつことができます。

メニューが Figure のドックにどのように影響するか

既定では、GUIDE を使用して UI を作成する場合、その UI のメニュー バーは作成されません。UI にメニューが不要な場合もありますが、UI ウィンドウのドックやアンドックを可能にするには、UI にメニュー バーまたはツール バーを含めなければなりません。これは、以下の図が示すように、ドックがドックのためのアイコンでコントロールされているためです。このアイコンは、メニュー バーまたはツール バーの右上隅付近の小さな曲がった矢印です。

標準メニュー バーをもつ Figure ウィンドウにも、[デスクトップ] メニューがあります。ユーザーはこのメニューから Figure ウィンドウをドックしたりアンドックすることができます。

ドックのための矢印と [デスクトップ][Figure をドックに入れる] メニュー項目を表示するには、プロパティ インスペクターを使用して Figure のプロパティ DockControls'on' に設定します。ドックのコントロールを表示するには、MenuBar および/または ToolBar のFigure プロパティを 'figure' に設定しなければなりません。

WindowStyle Figure プロパティもドックの動作に影響します。既定値は 'normal' ですが、'docked' に変更した場合、次の動作が適用されます。

  • UI ウィンドウは、実行するとデスクトップにドックされた状態で開きます。

  • DockControls プロパティが 'on' に設定され、WindowStyle'docked' の設定を抜けるまでオフにはできません。

  • WindowStyle 'docked' で作成された UI ウィンドウをアンドックした場合、Figure が (標準またはカスタマイズされた) メニュー バーまたはツール バーを表示しない限り、ドック用の矢印は表示されません。ドックのための矢印がないと、デスクトップからのアンドックはできても、ドックし直すことはできません。

ただし、GUIDE を使用して独自のメニュー バーまたはツール バーを与えると、UI ウィンドウをドック可能にする場合にドック用の矢印を表示できます。

メモ

モーダルなダイアログである UI (WindowStyle'modal' に設定した Figure) は、メニュー バー、ツール バー、ドックのコントロールをもつことができません。

詳細については、Figure のプロパティDockControlsMenuBarToolBar および WindowStyle プロパティの説明を参照してください。

メニュー バーへの標準メニューの追加

Figure の MenuBar プロパティは、ユーザー UI が MATLAB の標準メニューをメニュー バー上に表示するかどうかをコントロールします。GUIDE は MenuBar の値を none に初期設定します。UI に MATLAB の標準メニューを表示する場合、プロパティ インスペクターを用いて MenuBarfigure に設定します。

  • MenuBar の値が none である場合、GUIDE は、作成するメニューのみを表示するメニュー バーを自動的に追加します。

  • MenuBar の値が figure である場合、UI は MATLAB の標準メニューを表示し、GUIDE は作成するメニューをメニュー バーの右側に追加します。

いずれの場合においても、Figure の DockControls プロパティを 'on' に設定すると、ユーザーはウィンドウをドックしたり、アンドックしたりすることができます。

メニューの作成

  1. 新しいメニューは、ツール バーの新規メニュー ボタンをクリックすることから始めます。Untitled 1 というメニュー タイトルが、ダイアログ ボックスの左ペインに表示されます。

    既定では、GUIDE はメニュー エディターを開くと [メニュー バー] タブを選択しています。

  2. メニュー タイトルをクリックして、メニュー プロパティの選択を右のペインに表示します。

  3. メニューの [テキスト] フィールドと [タグ] フィールドに入力します。たとえば、[テキスト]File に、[タグ]file_menu に設定します。変更が有効になるように、フィールドの外側をクリックします。

    [テキスト] は、メニュー項目のテキスト ラベルです。ラベルにアンパサンド文字 (&) を表示するには、2 つの & 文字を使用します。removedefaultfactory (大文字と小文字の区別あり) は予約語です。これらのいずれかをラベルとして使用するには、先頭に円記号 (\) を付けます。たとえば、\removeremove を与えます。

    [タグ] は、メニュー オブジェクトの識別子として機能する文字ベクトルです。これは、メニュー項目を識別するためにコードで使用されるため、コード ファイルで一意でなければなりません。

メニューに項目を追加

ドロップダウン メニューにメニュー項目を作成するには、[新規メニュー項目] ツールを使用してください。

  1. File を選択して、ツール バーの [新規メニュー項目] ボタンをクリックすることによって、File の下に [開く] メニュー項目を追加します。一時的な番号が付いたメニュー項目ラベル Untitled が表示されます。

  2. 新規メニュー項目の [テキスト] フィールドと [タグ] フィールドに入力します。たとえば、[テキスト]Open に、[タグ]menu_file_open に設定します。変更が有効になるように、フィールドの外側をクリックします。

以下を行うこともできます。

  • [アクセラレータ] ポップアップ メニューを使用して、メニュー項目に alphabetic キーボード アクセラレータを選択します。Ctrl とあわせてキーボードをタイプすることは、子のメニューをもたないメニュー項目を選択したものと等価の動作をします。アクセラレータはシステム上で他の目的で使用されるものもあり、結果として他のアクションが起こることもありますので、注意してください。

  • [この項目の上に区切りを入れる] をチェックすると、メニュー項目の上に区切りを表示します。

  • [この項目にチェック マークを入れる] をチェックすると、メニューが最初に開いたときにメニュー項目の隣にチェックが表示されます。チェックは、メニュー項目の現在の状態を示します。コンテキスト メニューに項目を追加の例を参照してください。

  • [この項目を有効にする] をチェックすると、最初にメニューが開いたときこの項目が有効になります。これにより、メニューが最初に開いたときにこの項目が選択可能になります。このオプションをクリアすると、メニューが最初に開いたときにこのメニュー項目は選択不可の状態で表示され、選択はできません。

  • メニュー項目を選択すると実行されるコールバック関数を指定します。UI を保存していない場合は、既定値は %automatic です。このフィールドを変更せずに UI を保存すると、GUIDE は [タグ] フィールドと UI ファイル名の組み合わせを使って値を自動的に設定します。このフィールドの指定とメニュー項目のプログラミングについての詳細は、メニュー項目を参照してください。

    [表示] ボタンは、エディターにコールバック サブ関数を表示します。UI を保存していない場合、GUIDE から保存するように指示されます。

  • [その他のプロパティ] ボタンをクリックすると、プロパティ インスペクターを開き、すべてのメニュー プロパティを変更できます。プロパティの詳細については、Menu のプロパティ を参照してください。

プログラミングと基本的な例についての詳細は、メニュー項目メニュー項目のチェック状態を更新する方法を参照してください。

追加のドロップダウン メニュー

追加のドロップダウン メニューを作成するためには、File メニューを作成した場合と同じように、新規メニュー ボタンを使用します。たとえば、次の図は、Edit ドロップダウン メニューも示します。

カスケード メニュー

カスケードするメニューを作成するためには、タイトルになるメニュー項目を選択し、[新規メニュー項目] ボタンをクリックします。下記の例において、Edit はカスケード メニューです。

メニュー項目のプログラミングについての詳細は、メニュー項目を参照してください。

次のメニュー エディターの図は、Figure メニュー バーに対して定義される 3 つのメニューを示します。

ユーザーがアプリを実行すると、メニュー バーにメニュー タイトルが表示されます。

コンテキスト メニュー

コンテキスト メニュー は、メニューが定義されているオブジェクト上を右クリックすると表示されます。メニュー エディターは、コンテキスト メニューの定義を可能とし、レイアウト内のオブジェクトと関連付けます。3 つの手順があります。

メニューの定義についての詳細は、メニュー バー に対してのメニューを参照してください。メニューに対するローカル コールバック関数の定義の詳細は、メニュー項目を参照してください。

親メニューの作成

コンテキスト メニュー内のすべての項目は、Figure メニュー バーに表示されないメニューの子です。親メニューを定義するには、

  1. メニュー エディターの [コンテキスト メニュー] タブを選択し、ツール バーから [新規コンテキスト メニュー] を選択します。

  2. メニューを選択し、[Tag] フィールドにコンテキスト メニュー タグを入力します (この例では、axes_context_menu)。

コンテキスト メニューに項目を追加

コンテキスト メニューにメニュー項目を作成するためには、[新規メニュー項目] ボタンを使用してください。

  1. axes_context_menu を選択し、[新規メニュー項目] ツールをクリックすることによって、メニューに [Blue background color] メニュー項目を追加します。一時的な番号が付いたメニュー項目ラベル Untitled が表示されます。

  2. 新規メニュー項目の [テキスト] フィールドと [タグ] フィールドに入力します。たとえば、[テキスト]Blue background color に、[タグ]blue_background に設定します。変更が有効になるように、フィールドの外側をクリックします。

メニュー項目は以下の方法でも変更できます。

  • [この項目の上に区切りを入れる] をチェックすると、メニュー項目の上に区切りを表示します。

  • [この項目にチェック マークを入れる] をチェックすると、メニューが最初に開いたときにメニュー項目の隣にチェックが表示されます。チェックは、メニュー項目の現在の状態を示します。コンテキスト メニューに項目を追加の例を参照してください。コードの例については、メニュー項目のチェック状態を更新する方法を参照してください。

  • [この項目を有効にする] をチェックすると、最初にメニューが開いたときこの項目が有効になります。これにより、メニューが最初に開いたときにこの項目が選択可能になります。このオプションをクリアすると、メニューが最初に開いたときにこのメニュー項目は選択不可の状態で表示され、選択はできません。

  • メニュー項目に関連する動作を実行するメニューで [コールバック] を指定します。UI を保存していない場合は、既定値は %automatic です。このフィールドを変更せずに UI を保存すると、GUIDE は [タグ] フィールドと UI ファイル名の組み合わせを使って、コールバックをコード ファイル内に自動的に作成します。コールバック名は、メニュー エディターの [コールバック] フィールドに表示されませんが、メニュー項目を選択するとコールバックが実行します。

    [コールバック] フィールドにコマンドを入力することもできます。その際には、任意の有効な MATLAB 表現やコマンドを使用できます。たとえば、次のコマンドを例に考えてみます。

    set(gca, 'Color', 'y')
    は、現在の座標軸の背景色を黄色に設定します。ただし、この操作を実行するには、コールバックをコード ファイルに配置することをお勧めします。これにより、いくつかの Figure または座標軸が存在する場合必ずしも確実であるとは限らない、gca は利用されません。次に示すのは、コード ファイルに関数としてコーディングされた、このコールバックの例です。
    function axesyellow_Callback(hObject, eventdata, handles)
    % hObject    handle to axesyellow (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    set(handles.axes1,'Color','y')
    このコードは、コンテキスト メニューが付加されているオブジェクトにかかわらず、Tag axes1 を用いて座標軸の背景色を設定します。

    メニュー エディターでコールバック値を入力すると、コード ファイルに項目のコールバックが保存されている場合は、そのコールバックがオーバーライドされます。[コールバック] フィールドに入力した値を削除すると、UI でその項目を選択した場合、コード ファイル内のその項目に対するコールバックが実行されます。

    このフィールドの指定とメニュー項目のプログラミングについての詳細は、メニュー項目を参照してください。

    [表示] ボタンは、エディターにコールバック サブ関数を表示します。UI を保存していない場合、GUIDE から保存するように指示されます。

  • プロパティ インスペクターを開きます。プロパティ インスペクターでは、[その他のプロパティ] ボタンをクリックすることで、コールバックを除くすべてのメニュー プロパティを変更できます。これらのプロパティの詳細については、ContextMenu のプロパティ を参照してください。

コンテキスト メニューとオブジェクトの関連付け

  1. レイアウト エディターで、コンテキスト メニューを定義するオブジェクトを選択してください。

  2. プロパティ インスペクターを使用して、このオブジェクトの ContextMenu プロパティを目的のコンテキスト メニュー名に設定します。

次の図に、Tag プロパティ axes1 をもつ axes オブジェクトの ContextMenu プロパティを示します。

コード ファイルで、コンテキスト メニューの各項目に対応するローカル コールバック関数を完成させます。各コールバックは、ユーザーが、関連するコンテキスト メニュー項目を選択した場合に実行します。構文の定義についての詳細は、メニュー項目を参照してください。

プログラミングの詳細と基本的な例については、メニュー項目のチェック状態を更新する方法を参照してください。

関連するトピック