Main Content

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

テーブルを表示するプログラム アプリ

この例では、関数 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];

列の並べ替えの有効化とセル値の編集の制限

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

uit.ColumnSortable = true;

テーブル内のデータを編集するユーザーの権限を制限するには、ColumnEditable プロパティを設定します。既定では、実行中のアプリでデータを編集することはできません。列の ColumnEditable プロパティを true に設定すると、その列のデータが編集可能になります。

uit.ColumnEditable = [false false true true true true];

コールバックの作成

Table オブジェクトには、よく使用される 2 つのコールバックがあります。CellSelectionCallback は、ユーザーが別のセルを選択すると実行されます。CellEditCallback は、ユーザーがセルの値を変更すると実行されます。

uit.CellEditCallback = @ageCheckCB;

たとえば、Age 列に 0120 の値を格納する場合、CellEditCallback を次のような関数に設定します。

function ageCheckCB(src,eventdata)
if (eventdata.Indices(2) == 2 && ...                  % check if column 2
      (eventdata.NewData < 0 || eventdata.NewData > 120))
   tableData = src.Data;
   tableData{eventdata.Indices(1),eventdata.Indices(2)} = eventdata.PreviousData;
   src.Data = tableData;                              % set the data back to its original value
   warning('Age must be between 0 and 120.')          % warn the user
end
end

ユーザーが許容範囲外の値を入力すると、コールバック関数が警告を返し、セル値が前の値に戻されます。

すべてのテーブル プロパティの取得

テーブルのすべてのプロパティを確認するには、get コマンドを使用します。

get(uit)
          BackgroundColor: [3x3 double]
             BeingDeleted: off
               BusyAction: 'queue'
            ButtonDownFcn: ''
         CellEditCallback: @ageCheckCB
    CellSelectionCallback: ''
                 Children: [0x0 handle]
           ColumnEditable: [0 0 1 1 1 1]
             ColumnFormat: {}
               ColumnName: {6x1 cell}
           ColumnSortable: 1
              ColumnWidth: {'auto'  [75]  'auto'  'auto'  'auto'  [100]}
              ContextMenu: [0x0 GraphicsPlaceholder]
                CreateFcn: ''
                     Data: [100x6 table]
                DeleteFcn: ''
              DisplayData: [100x6 table]
    DisplayDataChangedFcn: ''
                   Enable: 'on'
                   Extent: [0 0 0 0]
                FontAngle: 'normal'
                 FontName: 'Helvetica'
                 FontSize: 12
                FontUnits: 'pixels'
               FontWeight: 'normal'
          ForegroundColor: [0 0 0]
         HandleVisibility: 'on'
            InnerPosition: [15 25 565 200]
            Interruptible: on
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                   Layout: [0x0 matlab.ui.layout.LayoutOptions]
            OuterPosition: [15 25 565 200]
                   Parent: [1x1 Figure]
                 Position: [15 25 565 200]
     RearrangeableColumns: off
                  RowName: 'numbered'
              RowStriping: on
      StyleConfigurations: [0x3 table]
                      Tag: ''
                  Tooltip: ''
                     Type: 'uitable'
                    Units: 'pixels'
                 UserData: []
                  Visible: on