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;

Table of patient data, with columns titled 'LastName', 'Age', 'Weight', 'Height', 'Smoker', and 'SelfAssessedHealthStatus'. The SelfAssessedHealthStatus column displays the status of each patient as one of 'Poor', 'Fair', 'Good', or 'Excellent'.

表示のカスタマイズ

UI テーブルの表示をいくつかの方法でカスタマイズすることができます。列見出しを追加するには、ColumnName プロパティを使用します。

uit.ColumnName = {'Last Name','Age','Weight', ...
                  'Height','Smoker','Health Status'};

Table of patient data, with columns titled 'Last Name', 'Age', 'Weight', 'Height', 'Smoker', and 'Health Status'. The data in the table is equivalent to the table above.

列の幅を調整するには、ColumnWidth プロパティを指定します。ColumnWidth プロパティは 1 行 N 列の cell 配列で、N はテーブルの列数です。特定の列の幅を設定するか、'auto' を使用して、内容を基に MATLAB® に幅を設定させます。

uit.ColumnWidth = {'auto',75,'auto','auto','auto',100};

Table of patient data with columns of different sizes. The Last Name, Weight, Height, and Smoker columns are the same width, set based on the contents of the column. The Age column is 75 pixels wide, and the Health Status column is 100 pixels wide.

RowName プロパティを 'numbered' に設定することで、番号付きの行見出しを追加します。

uit.RowName = 'numbered';

Table of patient data. The first column of the table does not have a title and provides the row number.

Position プロパティを使用してテーブルの位置とサイズを変更します。

uit.Position = [15 25 565 200];

Table of patient data, moved down in the figure window and made less wide when compared to the previous table. The Age and Health Status columns remain at 75 and 100 pixels wide, respectively. The Last Name, Weight, Height, and Smoker column widths are automatically resized to fit the new table size.

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

uit.BackgroundColor = [1 1 .9; .9 .95 1;1 .5 .5];

Table of patient data. The first, fourth, and seventh rows are colored yellow, the second, fifth, and eight rows are colored blue, and the third and sixth rows are colored red.

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

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

uit.ColumnSortable = true;

Table of patient data. The Last Name column has arrows pointing up and down next to the column title to indicate that the column is sortable.

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

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

Table of patient data. The app user has clicked on the Health Status cell in the first row, which displays a drop-down menu with the options 'Poor', 'Fair', 'Good', and 'Excellent'.

コールバックの作成

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