ドキュメンテーション

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

プログラム GUI のタブ順序の設定

タブの動作仕様

GUI のタブの順序は、ユーザーがキーボードの Tab キーを押す際に、GUI のコンポーネントがフォーカスされる順序です。フォーカスは、通常、境界または点線の境界で表されます。

タブ順序は、各親の子に対して別々に決定されます。たとえば、GUI の Figure の子のコンポーネントはそれ自身のタブ順序をもちます。各パネルまたはボタン グループの子のコンポーネントは、それ自身のタブ順序ももちます。

ある 1 つのレベルにあるコンポーネントにタブの順序を付ける場合、ユーザーはパネルまたはボタン グループに順序を付け、続いて、パネルまたはボタン グループに到達するレベルに戻る前に、パネルまたはボタン グループ内のコンポーネントに順序を付けます。たとえば、GUI の Figure に 3 つのプッシュ ボタンを含むパネルがあり、ユーザーがこのパネルにタブ順序を付ける場合、タブは、Figure に返る前に 3 つのプッシュ ボタンを一巡します。

    メモ:   座標軸とスタティック テキスト コンポーネントにタブを付けることはできません。どのコンポーネントがフォーカスをもっているかをプログラミングで決定できません。

既定のタブ順序

各レベルに対する既定のタブの順序は、そのレベルでコンポーネントを作成する順序です。

以下のコードは、スタティック テキスト ラベルをもつポップアップ メニュー、3 つのプッシュ ボタンをもつパネル、座標軸を含む GUI を作成します。

fh = figure('Position',[200 200 450 270]);
pmh = uicontrol(fh,'Style','popupmenu',...
           'String',{'peaks','membrane','sinc'},...
           'Position',[290 200 130 20]);
sth = uicontrol(fh,'Style','text','String','Select Data',...
           'Position',[290 230 60 20]);
ph = uipanel('Parent',fh,'Units','pixels',...
           'Position',[290 30 130 150]);
ah = axes('Parent',fh,'Units','pixels',...
           'Position',[40 30 220 220]);
bh1 = uicontrol(ph,'Style','pushbutton',...
           'String','Contour','Position',[20 20 80 30]);
bh2 = uicontrol(ph,'Style','pushbutton',...
           'String','Mesh','Position',[20 60 80 30]);
bh3 = uicontrol(ph,'Style','pushbutton',...
           'String','Surf','Position',[20 100 80 30]);

Children プロパティを取得することによって、Figure、パネル、またはボタン グループに対する、既定のタブ順序を取得できます。たとえば、次のステートメントのようになります。

ch = get(ph,'Children')

ph は、パネルのハンドルです。このステートメントは、子と 3 つのプッシュ ボタンのハンドルを含むベクトルを返します。

ch =
   4.0076 
   3.0076 
   2.0076 

これらのハンドルは、次の表に示すようにプッシュ ボタンに相当します。

ハンドル

ハンドル変数

プッシュ ボタン

4.0076

bh3

Surf

3.0076

bh2

Mesh

2.0076

bh1

Contour

プッシュ ボタンの既定のタブの順序は、子のベクトルの順序の逆、[Contour][Mesh][Surf] です。

    メモ:   関数 get は、HandleVisibility プロパティを on に設定された、ハンドルが表示可能である子のみを返します。allchild を使用して、ハンドルが表示可能であるかどうかに関わらず、子を取得します。

例の GUI の Figure において、既定の順序は、パネルの ContourMeshSurf プッシュ ボタンが (この順で) 続く、ポップアップ メニューです。座標軸コンポーネントやスタティック テキスト コンポーネントにタブを付けることはできません。

Mesh プッシュ ボタンの前に、Contour プッシュ ボタンの作成に続きポップアップ メニューを作成するようにコードを変更します。ここで、コードを実行して GUI と各コンポーネントのタブを作成します。このコードの変更は、既定のタブ順序を変更しません。これは、ポップアップ メニューがプッシュ ボタンと同じ親をもたないためです。この Figure は、パネルとポップアップ メニューの親です。

タブ順序の変更

関数 uistack を使用して、同じ親をもつコンポーネントのタブ順序を変更します。uistack の使いやすい構文は、次のとおりです。

uistack(h,stackopt,step)

h は、タブ順序を変更する必要があるコンポーネントのハンドルのベクトルです。

stackopt は、移動の方向を表します。これは、文字列updowntopbottom のうちの 1 つでなければならず、ステートメントによって返される列ベクトルに関連して解釈されます。

ch = get(ph,'Children')

ch =
   4.0076 
   3.0076 
   2.0076 

タブ順序が現在 [Contour][Mesh][Surf] である場合、次のステートメント

uistack(bh2,'up',1)

は、bh2 (Mesh) を、子のべクトル内で 1 つ上の場所に配置し、タブ順序を [Contour][Surf][Mesh] に変更します。

ch = get(ph,'Children')

は、次の出力をします。

ch =
   3.0076 
   4.0076 
   2.0076 

step は、変更されたレベル数です。既定値は 1 です。

    メモ:   タブの順序は、コンポーネントを積み重ねる順序にも影響します。コンポーネントが重なる場合、子の順序が下位に現れるコンポーネントは、より上位に現れるコンポーネントの上に描かれます。例のプッシュ ボタンが重なった場合、[Contour] プッシュ ボタンが上になります。

この情報は役に立ちましたか?