Main Content

GridLayout のプロパティ

グリッド レイアウト マネージャーの動作を制御

グリッド レイアウト マネージャーは、Figure 全体、または Figure 内のコンテナーにまたがる透明なグリッドの行と列に沿って UI コンポーネントを配置します。グリッド レイアウトのプロパティ値を変更すると、動作の特定の特性を変更できます。ドット表記を使用して、特定のオブジェクトとプロパティを参照します。

fig = uifigure;
g = uigridlayout(fig);
g.ColumnWidth = {100,'1x'};

グリッド

すべて展開する

列幅。'fit'、数値、あるいは文字 'x' と組み合わされた数値のいずれかを含む cell 配列として指定します。値の任意の組み合わせを指定できます。cell 配列内の要素数が、グリッド内の列数を制御します。たとえば、4 列のグリッドを作成するには、1 行 4 列の cell 配列を指定します。列幅は string 配列または数値配列として指定できますが、["1x" "2x" "1x"][100 200 50] のように指定される要素が同じ型である場合に限られます。

列幅には 3 つの異なるタイプがあります。

  • 幅を合わせる — 'fit' を指定します。内容が収まるように列幅が自動的に調整されます。テキストベース コンポーネントの場合、'fit' による幅ではテキスト全体が表示されるようにフォント プロパティが調整されます。テキストベース以外のコンポーネントの場合、'fit' による幅はコンポーネントの既定サイズとその他の要因に基づきます。コンポーネントに合わせた列幅のハードコーディングを回避する場合、またはアプリが別の言語に翻訳されたり異なるプラットフォームで実行されたりする場合は、'fit' 幅を使用します。

  • ピクセル単位の固定幅 — 数値を指定します。列幅は、指定されたピクセル数で固定されます。親コンテナーのサイズが変更されても、列幅は変わりません。

  • 可変幅 — 文字 'x' と組み合わされた数値を指定します (たとえば、'1x')。親コンテナーのサイズが変更されると、列幅は拡大または縮小します。可変幅の列は、固定幅の列によって使用されずに残っている横方向のスペースを埋めます。文字 'x' と組み合わせる数値は、残りのスペースをすべての可変幅の列間で分割するための重みです。グリッドに可変幅の列が 1 つしかない場合は、数値とは無関係に残りのスペースがすべて使用されます。同じ数値を使用する可変幅の列が複数ある場合は、スペースが等しく共有されます。それ以外の場合、スペースの量は数値に比例します。

たとえば、{'fit',200,'2x','1x'} は 1 番目の列のサイズをその内容が収まるように設定し、2 番目の列を 200 ピクセルに固定し、残りの 2 列で残りの横方向のスペースを共有します。3 番目の列は、4 番目の列の 2 倍のスペースを使用します。

レイアウトの特定の要素を変更すると、このプロパティの値に影響が及ぶ場合があります。たとえば、完全に入力されたグリッドに対してさらにコンポーネントを追加した場合、グリッドのサイズは、新たなコンポーネントを収容するように変更されます。

既にコンポーネントを含むグリッド レイアウトの ColumnWidth プロパティを変更しても、コンポーネントのレイアウトは変化しません。たとえば、コンポーネントを含む列を動的に削除しようとしても、それらのコンポーネントをその列の外に移動するまで ColumnWidth プロパティは変化しません。

行の高さ。'fit'、数値、あるいは文字 'x' と組み合わされた数値のいずれかを含む cell 配列として指定します。値の任意の組み合わせを指定できます。cell 配列内の要素数が、グリッド内の行数を制御します。たとえば、4 行をもつグリッドを作成するには、1 行 4 列の cell 配列を指定します。行の高さは string 配列または数値配列として指定できますが、["1x" "2x" "1x"][100 200 50] のように指定される要素が同じ型である場合に限られます。

行の高さには、3 つの異なるタイプがあります。

  • 高さを合わせる — 'fit' を指定します。内容が収まるように列の高さが自動的に調整されます。テキストベースのコンポーネントの場合、'fit' による高さではテキスト全体が表示されるようにフォント プロパティが調整されます。テキストベース以外のコンポーネントの場合、'fit' による高さはコンポーネントの既定サイズとその他の要因に基づきます。コンポーネントに合わせた行の高さのハードコーディングを回避する場合、またはアプリが別の言語に翻訳されたり異なるプラットフォームで実行されたりする場合は、'fit' 高さを使用します。

  • ピクセル単位の固定の高さ — 数値を指定します。行の高さは、指定されたピクセル数で固定されます。親コンテナーのサイズが変更されても、行の高さは変わりません。

  • 可変の高さ — 文字 'x' と組み合わされた数値を指定します (たとえば、'1x')。親コンテナーのサイズが変更されると、行は拡大または縮小します。可変の高さの行は、固定の高さの行によって使用されずに残っている縦方向のスペースを埋めます。文字 'x' と組み合わせる数値は、残りのスペースをすべての可変高の行間で分割するための重みです。グリッドに可変の高さの行が 1 つしかない場合は、数値とは無関係に残りのスペースがすべて使用されます。同じ数値を使用する可変の高さの行が複数ある場合は、スペースが等分されます。それ以外の場合、スペースの量は数値に比例します。

たとえば、{'fit',200,'2x','1x'} は 1 番目の行のサイズをその内容が収まるように設定し、2 番目の行を 200 ピクセルに固定し、残りの 2 行で残りの縦方向のスペースを共有します。3 番目の行は、4 番目の行の 2 倍のスペースを使用します。

レイアウトの特定の要素を変更すると、このプロパティの値に影響が及ぶ場合があります。たとえば、完全に入力されたグリッドに対してさらにコンポーネントを追加した場合、グリッドのサイズは、新たなコンポーネントを収容するように変更されます。

既にコンポーネントを含むグリッド レイアウトの RowHeight プロパティを変更しても、コンポーネントのレイアウトは変化しません。たとえば、コンポーネントを含む行を動的に削除しようとしても、それらのコンポーネントをその行の外に移動するまで RowHeight プロパティは変化しません。

列の間隔。グリッド内の隣接列との間のピクセル数を示すスカラー数値として指定します。指定した数値はすべての列に適用されます。

行の間隔。グリッド内の隣接行との間のピクセル数を示すスカラー数値として指定します。指定した数値はすべての行に適用されます。

グリッドの外周囲のパディング。[left bottom right top] という形式のベクトルとして指定します。ベクトルの要素は次の表のとおりです。

ベクトル要素説明
left

親コンテナーの内側左端とグリッドの左端の間の距離 (ピクセル単位)。

bottom

親コンテナーの内側下端とグリッドの下端の間の距離 (ピクセル単位)。

right

親コンテナーの内側右端とグリッドの右端の間の距離 (ピクセル単位)。

top

親コンテナーの内側上端とグリッドの上端の間の距離 (ピクセル単位)。親コンテナーの内側上端は、すべての装飾 (タイトル、タブ ラベル、メニュー バーなど) の下から始まります。

すべて展開する

背景色。RGB 3 成分、16 進数カラー コード、または表にリストされた色オプションのいずれかとして指定します。

RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、3 桁または 6 桁の 0 から F までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。この値は大文字と小文字を区別しません。したがって、カラー コード "#FF8800""#ff8800""#F80"、および "#f80" は等価です。

あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。

色名省略名RGB 3 成分16 進数カラー コード外観
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

MATLAB® の多くのタイプのプロットで使用されている既定の色の RGB 3 成分および 16 進数カラー コードを次に示します。

RGB 3 成分16 進数カラー コード外観
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

対話機能

すべて展開する

子の可視性。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

グリッド内のすべての子コンポーネントとその子孫を非表示にするには、このプロパティを 'off' に設定します。子とその子孫は、その Visible プロパティの設定にかかわらず非表示になります。コンポーネントが非表示になっている場合、アプリには表示されませんが、プロパティの取得や設定はできます。

このプロパティを 'on' に設定した場合、子とその子孫は、その Visible プロパティが 'on' に設定されている場合にのみ表示されます。

グリッドの Visible プロパティを設定しても、子孫の Visible プロパティの値は変更されません。

スクロール機能。'off' または 'on'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティを 'on' に設定すると、グリッド レイアウト マネージャー内でのスクロールが有効になります。スクロールするには、次の条件を満たしていなければなりません。

  • グリッド レイアウト マネージャーの 'RowHeight' プロパティに対して指定した値の合計は、親コンテナーの高さより大きくなければならない。

  • グリッド レイアウト マネージャーの 'ColumnWidth' プロパティに対して指定した値の合計は、親コンテナーの幅より大きくなければならない。

  • グリッド レイアウト マネージャーの少なくとも 1 行または 1 列が、固定ピクセルの高さまたは幅に設定されていなければならない。

  • グリッド レイアウト マネージャーにコンポーネントが含まれていなければならない。

特定のタイプのチャートと座標軸では、スクロール可能なコンテナーはサポートされていません。ただし、チャートや座標軸をスクロール不可能なパネル内に配置してから、そのパネルをスクロール可能なコンテナーに配置することはできます。詳細については、App Designer でのグラフィックスの表示を参照してください。

コンテキスト メニュー。ContextMenu オブジェクトとして指定します。このプロパティは、グリッド レイアウト マネージャーを右クリックしたときにコンテキスト メニューを表示するために使用します。関数 uicontextmenu を使用して、コンテキスト メニューを作成します。

位置

すべて展開する

この プロパティ は読み取り専用です。

グリッド レイアウト マネージャーの位置とサイズ。[left bottom width height] の形式の 4 要素ベクトルとして返されます。次の表で、ベクトルの各要素について説明します。

要素説明
left親コンテナーの内側左端からグリッド レイアウト マネージャーの左端までの距離
bottom親コンテナーの内側下端からグリッド レイアウト マネージャーの下端までの距離
widthグリッド レイアウト マネージャーの左端から右端までの距離
heightグリッド レイアウト マネージャーの下端から上端までの距離

すべての測定単位はピクセルです。

以下の図は、グリッド レイアウト マネージャーの Position 値 (オレンジの実線) と InnerPosition 値 (青の破線) で定義された領域と、いくつかの UI コンポーネントを示しています。

Grid layout manager in a UI figure window. The orange solid line surrounds the interior of the UI figure window and excludes the UI figure title bar. The blue dashed line surrounds the area of the grid layout manager that contains the UI components and excludes the padding around the components.

この プロパティ は読み取り専用です。

グリッド レイアウト マネージャーの位置とサイズ (パディングを除く)。[left bottom width height] の形式の 4 要素ベクトルとして返されます。次の表で、ベクトルの各要素について説明します。

要素説明
left親コンテナーの内側左端から、グリッド レイアウト マネージャーのコンポーネントを配置できる領域の内側左端までの距離
bottom親コンテナーの内側下端から、グリッド レイアウト マネージャーのコンポーネントを配置できる領域の内側下端までの距離
widthグリッド レイアウト マネージャーのコンポーネントを配置できる領域の内側左端から内側右端までの距離
heightグリッド レイアウト マネージャーのコンポーネントを配置できる領域の内側下端から内側上端までの距離

すべての測定単位はピクセルです。

InnerPosition の値は Padding プロパティの値に影響されます。Padding[0 0 0 0] の場合、InnerPosition プロパティ値は Position プロパティ値と同一です。

以下の図は、グリッド レイアウト マネージャーの Position 値 (オレンジの実線) と InnerPosition 値 (青の破線) で定義された領域と、いくつかの UI コンポーネントを示しています。

Grid layout manager in a UI figure window. The orange solid line surrounds the interior of the UI figure window and excludes the UI figure title bar. The blue dashed line surrounds the area of the grid layout manager that contains the UI components and excludes the padding around the components.

この プロパティ は読み取り専用です。

グリッド レイアウト マネージャーの位置とサイズ。[left bottom width height] の形式の 4 要素ベクトルとして返されます。すべての測定単位はピクセルです。

このプロパティ値は、グリッド レイアウト マネージャーの Position プロパティ値と同一です。

レイアウト オプション。GridLayoutOptions オブジェクトとして指定します。このプロパティは、入れ子にされたグリッド レイアウト コンテナーのオプションを指定します。グリッド レイアウトが別のグリッド レイアウト コンテナーの子でない場合 (たとえば、figure や panel の子である場合)、このプロパティは空となり、効果はありません。ただし、グリッド レイアウトが別のグリッド レイアウトの子である場合、GridLayoutOptions オブジェクトの Row および Column プロパティを設定して、親グリッドの目的の行と列にその子グリッドを配置できます。

たとえば、次のコードは grid1 の 3 行目の 2 列目で grid2 を入れ子にしています。

grid1 = uigridlayout([4 3]);
grid2 = uigridlayout(grid1);
grid2.Layout.Row = 3;
grid2.Layout.Column = 2;
子グリッドが親グリッドの複数の行や列にまたがるようにするには、Row または Column プロパティを 2 要素ベクトルとして指定します。たとえば、次のコマンドを実行すると、grid2grid12 列目から 3 列目にかけてまたがります。
grid2.Layout.Column = [2 3];

コールバック

すべて展開する

オブジェクト作成関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

このプロパティは、MATLAB がオブジェクトを作成するときに実行されるコールバック関数を指定します。MATLAB は CreateFcn コールバックを実行する前に、すべてのプロパティ値を初期化します。CreateFcn プロパティを指定しない場合、MATLAB は既定の作成関数を実行します。

既存のコンポーネントに CreateFcn プロパティを設定しても効果はありません。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、作成中のオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

オブジェクト削除関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

このプロパティは、MATLAB がオブジェクトを削除するときに実行されるコールバック関数を指定します。MATLAB は、オブジェクトのプロパティを破棄する前に DeleteFcn コールバックを実行します。DeleteFcn プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、削除されるオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

コールバック実行制御

すべて展開する

コールバックの割り込み。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティは実行中のコールバックが割り込み可能かどうかを決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

MATLAB は、コールバック キューを処理するコマンドを実行するたびにコールバックの割り込み動作を判別します。これらのコマンドには、drawnowfigureuifiguregetframewaitforpause があります。

実行中コールバックにこれらのコマンドが含まれていない場合、割り込みは発生しません。MATLAB は、実行中コールバックの実行を先に終了させ、その後に割り込みコールバックを実行します。

実行中コールバックにこれらのいずれかのコマンドが含まれている場合、実行中コールバックを所有するオブジェクトの Interruptible プロパティに応じて割り込みが発生するかどうかが決まります。

  • Interruptible の値が 'off' の場合、割り込みは発生しません。代わりに、割り込みコールバックを所有するオブジェクトの BusyAction プロパティに応じて、割り込みコールバックが破棄されるかコールバック キューに追加されるかが決まります。

  • Interruptible の値が 'on' の場合、割り込みが発生します。MATLAB は、コールバック キューの次回処理時に、実行中コールバックの実行を停止し、割り込みコールバックを実行します。割り込みコールバックが完了した後、MATLAB は実行中だったコールバックの実行を再開します。

メモ

コールバックの割り込みと実行は、以下の状況では動作が異なります。

  • 割り込みコールバックが DeleteFcnCloseRequestFcn または SizeChangedFcn コールバックの場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 実行中のコールバックが関数 waitfor を現在実行している場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 割り込みコールバックが Timer オブジェクトで所有されている場合、Interruptible プロパティの値にかかわらずスケジュールに従ってコールバックが実行されます。

メモ

MATLAB は、割り込みが発生したときにプロパティの状態や表示を保存しません。たとえば、gca コマンドや gcf コマンドから返されたオブジェクトは、別のコールバックを実行するときに変更されている可能性があります。

コールバック キューイング。'queue' または 'cancel' として指定します。BusyAction プロパティは MATLAB による割り込みコールバックの実行の処理方法を決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

BusyAction プロパティによってコールバック キューイングの動作が決まるのは、次の両方の条件を満たす場合のみです。

  • 実行中コールバックに drawnowfigureuifiguregetframewaitforpause などのコールバック キューを処理するコマンドが含まれている。

  • 実行中コールバックを所有するオブジェクトの Interruptible プロパティの値が 'off' である。

これらの条件に当てはまる場合、割り込みコールバックを所有するオブジェクトの BusyAction プロパティに応じて MATLAB による割り込みコールバックの処理方法が決まります。BusyAction プロパティは次の値を取ることができます。

  • 'queue' — 割り込みコールバックをキューに入れ、実行中のコールバックが終了した後に処理されるようにします。

  • 'cancel' — 割り込みコールバックを実行しません。

この プロパティ は読み取り専用です。

削除状態。matlab.lang.OnOffSwitchState 型の on/off logical 値として返されます。

MATLAB は、DeleteFcn コールバックが実行を開始すると、BeingDeleted プロパティを 'on' に設定します。コンポーネント オブジェクトが存在しなくなるまで BeingDeleted プロパティは 'on' に設定されたままです。

クエリや変更の前にオブジェクトが削除されようとしていないか確認するために BeingDeleted プロパティの値をチェックします。

親/子

すべて展開する

親コンテナー。関数 uifigure を使用して作成された Figure オブジェクト、またはその子コンテナー (TabPanelButtonGroup または GridLayout) のいずれかとして指定します。コンテナーが指定されていない場合、MATLAB は関数 uifigure を呼び出し、親コンテナーとして使用される新しい Figure オブジェクトを作成します。

子。UI コンポーネント オブジェクトの配列として返されます。このプロパティは、子のリストの参照や子の並べ替えに使用します。子を並べ替えるには、このプロパティ自体で値の順序を並べ替えます。このプロパティを使用して子の追加や削除を行うことはできません。このリストに子を追加するには、子 UI コンポーネントの Parent プロパティを設定します。

子を並べ替えても、グリッド内のコンポーネントの位置には影響しません。グリッド内のコンポーネントの位置を変更するには、Layout プロパティを設定します。

オブジェクト ハンドルの可視性。'on''callback' または 'off' として指定します。

このプロパティは、オブジェクトの親がもつ子のリストにおけるそのオブジェクトの可視性を制御します。オブジェクトがその親オブジェクトのリストで、子として可視できない場合、オブジェクト階層の検索またはプロパティのクエリによってオブジェクトを取得する関数は、そのオブジェクトを返しません。これらの関数には、getfindobjclf および close が含まれます。オブジェクトは参照できない場合も有効です。オブジェクトにアクセスできる場合は、そのプロパティを設定および取得して、それをオブジェクトに作用する任意の関数に渡すことができます。

HandleVisibility の値説明
'on' オブジェクトは常に参照できます。
'callback'オブジェクトはコールバック内から、あるいはコールバックにより呼び出される関数から参照できます。しかし、コマンド ラインから呼び出される関数からは参照できません。このオプションを使用すると、コマンド ラインからのオブジェクトへのアクセスがブロックされますが、コールバック関数からのアクセスは許可されます。
'off'オブジェクトは常に参照できません。このオプションは、他の関数による UI の意図しない変更を防止するために役立ちます。HandleVisibility'off' に設定すると、その関数の実行中にオブジェクトが一時的に非表示になります。

識別子

すべて展開する

この プロパティ は読み取り専用です。

グラフィックス オブジェクトのタイプ。'uigridlayout' として返されます。

オブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。オブジェクトの識別子として機能する一意の Tag 値を指定できます。コードの他の部分からオブジェクトにアクセスする必要がある場合、関数 findobj を使用して Tag 値に基づいてオブジェクトを検索できます。

ユーザー データ。任意の MATLAB 配列として指定します。たとえば、スカラー、ベクトル、行列、cell 配列、文字配列、table、または構造体を指定できます。このプロパティを使用して、任意のデータをオブジェクトに保存します。

App Designer を使用している場合は、UserData プロパティを使用する代わりに、アプリでパブリック プロパティまたはプライベート プロパティを作成してデータを共有します。詳細については、App Designer アプリ内でのデータの共有を参照してください。

バージョン履歴

R2018b で導入

すべて展開する