テーブルを表示するプログラム アプリ
この例では、関数 uitable を使用してアプリにテーブルを表示する方法を説明します。また、テーブルの外観を変更する方法と、実行中のアプリでテーブルの編集を制限する方法を示します。
Figure 内でのテーブル UI コンポーネントの作成
関数 uitable は、Figure 内に空の UI テーブルを作成します。
fig = uifigure('Position',[100 100 752 250]); uit = uitable('Parent',fig,'Position',[25 50 700 200]);
混在するデータ型を含むテーブルの作成
混在するデータ型を含む患者データのサンプルを読み込み、それを table 配列に保存します。データを、テーブル コンポーネントのセル内のドロップダウン リストとして表示するには、cell 配列変数を categorical 配列に変換します。データをテーブル UI コンポーネントに表示するには、table 配列を Data プロパティの値として指定します。
load patients t = table(LastName,Age,Weight,Height,Smoker, ... SelfAssessedHealthStatus); t.SelfAssessedHealthStatus = categorical(t.SelfAssessedHealthStatus, ... {'Poor','Fair','Good','Excellent'},'Ordinal',true); uit.Data = t;

表示のカスタマイズ
UI テーブルの表示をいくつかの方法でカスタマイズすることができます。列見出しを追加するには、ColumnName プロパティを使用します。
uit.ColumnName = {'Last Name','Age','Weight', ...
'Height','Smoker','Health Status'};
列の幅を調整するには、ColumnWidth プロパティを指定します。ColumnWidth プロパティは 1 行 N 列の cell 配列で、N はテーブルの列数です。特定の列の幅を設定するか、'auto' を使用して、内容を基に MATLAB® に幅を設定させます。
uit.ColumnWidth = {'auto',75,'auto','auto','auto',100};
RowName プロパティを 'numbered' に設定することで、番号付きの行見出しを追加します。
uit.RowName = 'numbered';
Position プロパティを使用してテーブルの位置とサイズを変更します。
uit.Position = [15 25 565 200];

既定では、テーブル UI コンポーネントは行のストライプ配色を使い、指定した背景色がテーブルの終わりまで繰り返されます。RowStriping プロパティを 'off' に設定すると、テーブル UI コンポーネントは BackgroundColor プロパティで指定された最初の色のみをすべての行に使用します。ここでは、行のストライプ配色を 'on' のままとし、BackgroundColor プロパティに 3 つの異なる色を設定します。
uit.BackgroundColor = [1 1 .9; .9 .95 1;1 .5 .5];

列の並べ替えの有効化とセル値の編集の制限
テーブル内のデータを編集するユーザーの権限を制限するには、ColumnEditable プロパティを設定します。既定では、実行中のアプリでデータを編集することはできません。列の ColumnEditable プロパティを true に設定すると、その列のデータが編集可能になります。
uit.ColumnEditable = [false true true true true true];

ColumnSortable プロパティを true に設定することで、すべての列を並べ替え可能にします。列が並べ替え可能である場合、ヘッダーにカーソルを合わせると矢印が表示されます。
uit.ColumnSortable = true;

コールバックの作成
ユーザーの操作にテーブルが応答するようにプログラムするには、コールバック関数を作成します。たとえば、SelectionChangedFcn を指定して、アプリ ユーザーがテーブル内で別の行、列、またはセルを選択したときにコマンドを実行できます。
ここでは、Age 列の値が 0 ~ 120 の範囲内であることを検証するコールバック関数を記述します。ageCheckCB という名前の新しい関数を作成し、MATLAB パス上のフォルダーに ageCheckCB というファイル名で保存します。
function ageCheckCB(src,event) if (event.Indices(2) == 2 && ... % check if column 2 (event.NewData < 0 || event.NewData > 120)) tableData = src.Data; tableData{event.Indices(1),event.Indices(2)} = event.PreviousData; src.Data = tableData; % revert the data warning('Age must be between 0 and 120.') % warn the user end
ageCheckCB を CellEditCallback プロパティに割り当てます。このコールバックは、ユーザーがセルの値を変更すると実行されます。ユーザーが許容範囲外の値を入力すると、コールバック関数が警告を返し、セル値が前の値に戻されます。
uit.CellEditCallback = @ageCheckCB;
コールバック関数の記述の詳細については、プログラムで作成したアプリ用のコールバックの作成を参照してください。
すべてのテーブル プロパティの取得
テーブルのすべてのプロパティを確認するには、get コマンドを使用します。
get(uit)
BackgroundColor: [3×3 double]
BeingDeleted: off
BusyAction: 'queue'
ButtonDownFcn: ''
CellEditCallback: @ageCheckCB
CellSelectionCallback: ''
Children: [0×0 handle]
ClickedFcn: ''
ColumnEditable: [0 1 1 1 1 1]
ColumnFormat: {}
ColumnName: {6×1 cell}
ColumnRearrangeable: off
ColumnSortable: 1
ColumnWidth: {'auto' [75] 'auto' 'auto' 'auto' [100]}
ContextMenu: [0×0 GraphicsPlaceholder]
CreateFcn: ''
Data: [100×6 table]
DeleteFcn: ''
DisplayData: [100×6 table]
DisplayDataChangedFcn: ''
DisplaySelection: []
DoubleClickedFcn: ''
Enable: 'on'
FontAngle: 'normal'
FontName: 'Helvetica'
FontSize: 12
FontUnits: 'pixels'
FontWeight: 'normal'
ForegroundColor: [0.1294 0.1294 0.1294]
HandleVisibility: 'on'
InnerPosition: [15 25 565 200]
Interruptible: on
KeyPressFcn: ''
KeyReleaseFcn: ''
Layout: [0×0 matlab.ui.layout.LayoutOptions]
Multiselect: on
OuterPosition: [15 25 565 200]
Parent: [1×1 Figure]
Position: [15 25 565 200]
RowName: 'numbered'
RowStriping: on
Selection: []
SelectionChangedFcn: ''
SelectionType: 'cell'
StyleConfigurations: [0×3 table]
Tag: ''
Tooltip: ''
Type: 'uitable'
Units: 'pixels'
UserData: []
Visible: on