ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

uicontextmenu

コンテキスト メニューの作成

この関数は、GUIDE または関数 figure を使用して作成した Figure でのみ使用します。

説明

c = uicontextmenu は、現在の Figure にコンテキスト メニューを作成し、ContextMenu オブジェクトを c に返します。Figure が存在しない場合は、MATLAB® が関数 figure を呼び出して Figure を作成します。

c = uicontextmenu(Name,Value) は、1 つ以上の名前と値のペアの引数を使用して指定されたプロパティ値をもつコンテキスト メニューを作成します。この構文を使用して、既定のプロパティ値をオーバーライドします。

c = uicontextmenu(parent) は、指定された親 Figure にコンテキスト メニューを作成します。

メモ

親を単独で指定しても、UI 内のコンテキスト メニューにはアクセスできるようになりません。次の手順も実行しなければなりません。

  • UIContextMenu プロパティを使用して、コンテキスト メニューをコンポーネントに割り当てます。

  • uicontextmenu の子 uimenu を 1 つ以上作成します。

詳細については、ヒントの節を参照してください。

c = uicontextmenu(parent,Name,Value) は、コンテキスト メニューの親 Figure と 1 つ以上の名前と値のペアの引数を指定します。

すべて折りたたむ

line オブジェクトの UIContextMenu プロパティの値を指定して、このラインに uicontextmenu を付加します。コンテキスト メニューは、ユーザーがラインを右クリックすると表示されます。たとえば、myprogram.m というプログラム ファイルを次のように作成して、プロットを作成しプロット ラインに uicontextmenu を付加します。

function myprogram

    f = figure('WindowStyle','normal');
    ax = axes;
    x = 0:100;
    y = x.^2;

    plotline = plot(x,y);
    c = uicontextmenu;

    % Assign the uicontextmenu to the plot line
    plotline.UIContextMenu = c;

    % Create child menu items for the uicontextmenu
    m1 = uimenu(c,'Label','dashed','Callback',@setlinestyle);
    m2 = uimenu(c,'Label','dotted','Callback',@setlinestyle);
    m3 = uimenu(c,'Label','solid','Callback',@setlinestyle);

        function setlinestyle(source,callbackdata)
            switch source.Label
                case 'dashed'
                    plotline.LineStyle = '--';
                case 'dotted'
                    plotline.LineStyle = ':';
                case 'solid'
                    plotline.LineStyle = '-';
            end
        end
end

ユーザーがプロット ラインを右クリックすると、コンテキスト メニューが表示されます。

コンテキスト メニューから項目を選択すると、そのライン スタイルが変更されます。

uimenu をサブメニューにするには、その Parent プロパティ値を指定します。たとえば、myprogram2 というファイルを作成します。プログラム ファイルを次のように作成して、最上位レベルのメニュー項目を 1 つとサブメニュー項目を 2 つもつコンテキスト メニューを作成します。

function myprogram2
    f = figure('WindowStyle','normal');
    c = uicontextmenu(f);

    % Assign the uicontextmenu to the figure
    f.UIContextMenu = c;

    % Create child menu of the uicontextmenu
    topmenu = uimenu('Parent',c,'Label','Change Color');
    
    % Create submenu items
    m1 = uimenu('Parent',topmenu,'Label','Red','Callback',@changecolor);
    m2 = uimenu('Parent',topmenu,'Label','Green','Callback',@changecolor);

    function changecolor(source,callbackdata)
        switch source.Label
            case 'Red'
                f.Color = [1.0 0.80 0.80];
            case 'Green'
                f.Color = [0.80 1.0 0.80];
        end
    end
end

作成したコンテキスト メニューは、ユーザーが Figure 内でマウスを右クリックすると表示されます。

コンテキスト メニューから色を選択すると、ウィンドウの色が変更されます。

入力引数

すべて折りたたむ

親 Figure。figure で作成した Figure オブジェクトとして指定します。親 Figure を指定しない場合は、MATLAB で関数 figure が呼び出されて親となる Figure が作成されます。

名前と値のペアの引数

例: 'Callback',@myfunction は、ユーザーがコンテキスト メニューを操作するときに実行される関数として myfunction を指定します。

ここでは、プロパティの一部だけを紹介しています。完全な一覧については、ContextMenu のプロパティ を参照してください。

コンテキスト メニューのコールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

データ型: function_handle | cell | char

メニューの子。空の GraphicsPlaceholder または Menu オブジェクトの 1 次元配列として返されます。メニューの子は、サブメニューとして機能するその他のメニューです。

Children プロパティを使用して子の追加や削除を行うことはできません。このプロパティは、子のリストの表示や子メニュー項目の並べ替えに使用します。この配列内の子の順序は、表示されるメニュー項目の順序を反映します。

このリストに子を追加するには、子コンポーネントの Parent プロパティをこの uicontextmenu オブジェクトに設定します。

HandleVisibility プロパティが 'off' に設定されているオブジェクトは、Children プロパティにリストされません。

ヒント

コンテキスト メニューは、次の要件が満たされる場合に、UI からアクセス可能になります。

  • UIContextMenu プロパティを使用して、コンテキスト メニューをコンポーネントに割り当てます。割り当てられたコンポーネントは、コンテキスト メニューと同じ Figure の子でなければなりません。

  • uicontextmenu の子 uimenu を 1 つ以上作成します。

以下に例を示します。

f = figure;
c = uicontextmenu(f);
% Create a new component and assign the uicontextmenu to it
b = uicontrol(f,'UIContextMenu',c);
% Create a child menu for the uicontextmenu
m = uimenu('Parent',c,'Label','Disable');

R2006a より前に導入