ドキュメンテーション

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

グラフィカルなテーブルをもつユーザー インターフェイスの作成

この例では、uitable を使用してユーザー インターフェイスにグラフィカルなテーブルを作成する方法を示します。テーブルの外観を変更する方法と、ユーザーがテーブルのデータに加えることができる変更を制限する方法も示します。

単純な数値データを含むグラフィカルなテーブルの作成

関数 uitable は、空のグラフィカルなテーブルを作成します。テーブルにデータを入力するには、Data プロパティを設定します。たとえば、表示データが魔方陣を形成するように設定します。

f = figure('Position', [100 100 752 250]);
t = uitable('Parent', f, 'Position', [25 50 700 200], 'Data', magic(10))
t = 

  Table with properties:

                Data: [10x10 double]
         ColumnWidth: 'auto'
      ColumnEditable: []
    CellEditCallback: ''
            Position: [25 50 700 200]
               Units: 'pixels'

  Use GET to show all properties

型の混合したデータを含むグラフィカルなテーブルの作成

型の混合したデータを表示するには、Data プロパティをセル配列に設定します。

load patients LastName Age Weight Height SelfAssessedHealthStatus                   % load data
PatientData = [LastName num2cell([Age Weight Height]) SelfAssessedHealthStatus];    % convert to cell array

t.Data = PatientData;

表示のカスタマイズ

テーブルの表示をいくつかの方法でカスタマイズすることができます。ColumnName プロパティを使用して、各列の一番上に見出しを追加します。複数行の見出しを作成するには、行の区切り記号を使用します。

t.ColumnName = {'LastName', 'Age', 'Weight', 'Height', 'Self Assessed|Health Status'};

列の幅を調整するには、ColumnWidth プロパティを使用します。ColumnWidth プロパティは 1N 列のセル配列で、N はテーブルの列数です。列に特定の幅を設定することも、内容に基づいて幅を自動調整するよう設定することもできます。

t.ColumnWidth = {100, 'auto', 'auto', 'auto', 150};

行名を完全に削除するには、[] を使用して RowName プロパティを空に設定します。

t.RowName = [];

Position プロパティを使用してテーブルのサイズを変更し、余分なスペースを取り除くことができます。

t.Position = [15 25 495 200];

既定では、テーブルには行のストライプ配色を使用します。行のストライプ配色をオフにするには、RowStriping プロパティを 'off' に設定します。行のストライプ配色の色を制御するには、BackgroundColor プロパティに 2 種類の色を設定します。ForegroundColor プロパティを使用して、テキストの色を制御します。

t.BackgroundColor = [.4 .4 .4; .4 .4 .8];
t.ForegroundColor = [1 1 1];

セル値の編集の制限

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

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

列の形式の変更

ColumnFormat プロパティは、各列についてデータが表示され編集される方法を制御します。ポップアップメニューの選択肢を指定するには、文字列のセル配列を列の形式として使用します。この例では、Self Assessed Health Status (健康状態の自己評価) 列に、ExcellentFairGoodPoor の 4 つのオプションをもつポップアップメニューが使用されています。

t.ColumnFormat = {[] [] [] [] {'Excellent', 'Fair', 'Good', 'Poor'}};

コールバックの作成

table オブジェクトには、よく使用される 2 つのコールバックがあります。CellSelectionCallback は、ユーザーがテーブルで現在選択しているセルを変更すると呼び出されます。CellEditCallback は、ユーザーがセルの値を変更すると呼び出されます。

t.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

Age 列に入力された値が許容範囲外の場合、コールバック関数は警告を発し、セルの内容を元の値に戻します。

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

MATLAB のグラフィックス オブジェクトには多数のプロパティがあります。table オブジェクトのすべてのプロパティを確認するには、get コマンドを使用します。

get(t)
          BackgroundColor: [2x3 double]
             BeingDeleted: 'off'
               BusyAction: 'queue'
            ButtonDownFcn: ''
         CellEditCallback: @ageCheckCB
    CellSelectionCallback: ''
                 Children: []
           ColumnEditable: [0 1 1 1 1]
             ColumnFormat: {[]  []  []  []  {1x4 cell}}
               ColumnName: {5x1 cell}
              ColumnWidth: {[100]  'auto'  'auto'  'auto'  [150]}
                CreateFcn: ''
                     Data: {100x5 cell}
                DeleteFcn: ''
                   Enable: 'on'
                   Extent: [0 0 479 1740]
                FontAngle: 'normal'
                 FontName: 'Helvetica'
                 FontSize: 10
                FontUnits: 'points'
               FontWeight: 'normal'
          ForegroundColor: [1 1 1]
         HandleVisibility: 'on'
            Interruptible: 'on'
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                   Parent: [1x1 Figure]
                 Position: [15 25 495 200]
     RearrangeableColumns: 'off'
                  RowName: ''
              RowStriping: 'on'
                      Tag: ''
            TooltipString: ''
                     Type: 'uitable'
            UIContextMenu: []
                    Units: 'pixels'
                 UserData: []
                  Visible: 'on'

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