ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

GUI で行列データを表示

この例では、uitable コンポーネントを使って GUI 上で行列データを表示する方法を示します。テーブルの外観を修正する方法と、エンド ユーザーがテーブルのデータに加えることができる変更を制限する方法も示します。

単純な数値データを使用

最初に、Figure を作成し、uitable の位置を決めます。

f = figure('Position', [100 100 752 350]);
t = uitable('Parent', f, 'Position', [25 25 700 200]);

いくつかの単純な数値データを作成し、Data プロパティを使用して uitable に設定します。この例では、魔方陣行列を使用します。

set(t, 'Data', magic(10));

混在するデータ型を使用

次に、単純な数値データをより複雑な行列で置き換えます。最初に、数値、文字、論理値の混在したデータを含むいくつかの新規データを作成します。そして、その新規行列を uitable の Data プロパティに設定します。

complexData = { ...
    'Andrew' 31 'Male' 76 230.75 false 'Somewhat Frequently' 10; ...
    'Bob' 41 'Male' 77 235.5 true 'Not Very Frequently' 10; ...
    'Clarice' 20 'Female' 74 130.25 false 'Very Frequently' 15; ...
    'Debra' 35 'Female' 67 140.25 true 'Very Frequently' 15;
    'Edward' 34 'Male' 73 247.5 true 'Very Frequently' 20};
set(t, 'Data', complexData);

表示のカスタマイズ

uitable 内に複雑なデータがあるので、情報をより意味のあるものにするために表示をカスタマイズします。まず、ColumnName プロパティを使用して、各列の上部に見出しやタイトルを追加します。複数行の見出しを作成するには、行の区切り記号を使用します。

set(t, 'ColumnName', {'Name', 'Age', 'Gender', 'Height', 'Weight', ...
                      'Stress|Tests', 'Exercise|Frequency', 'Copay'});

次に、ColumnWidth プロパティを使用して、いくつかの列の幅を調整します。列の 2 つについて特定の幅を設定し、内容に基づいて自動的に適合するよう残りの列をそのままにします。

set(t, 'ColumnWidth', {100 'auto' 'auto' 'auto' 'auto' 'auto' 150 'auto'});

[ ] を使用して RowName プロパティを空に設定することで、行の見出しを完全に削除します。

set(t, 'RowName', []);

余分な空白を削除するために、uitable のサイズを変更します。

set(t, 'Position', [25 25 702 119]);

最後に、ForegroundColor および BackgroundColor プロパティを使用して、前景色と背景色を変更します。RowStriping プロパティは既定で on になっていることがわかります。つまり、uitable は複数の、この場合は 2 つの背景色を表示します。ストライプ配色を有効にするには、2 つの異なる背景色を指定します。メモ: RowStriping プロパティを off に設定することで、行のストライプをオフにします。

foregroundColor = [1 1 1];
set(t, 'ForegroundColor', foregroundColor);
backgroundColor = [.4 .1 .1; .1 .1 .4];
set(t, 'BackgroundColor', backgroundColor);

制限した編集の許可

uitable が希望どおりに表示されるようになったので、ユーザーが ColumnEditable プロパティを使用して、GUI からデータを編集できるようにします。ただし、ユーザーの編集機能を制限します。最初に、ユーザーが Name 列で値を変更できないように、1 番目の列以外のすべての列における編集を有効にします。

set(t, 'ColumnEditable', [false true true true true true true true]);

次に、ColumnFormat プロパティを使用して、Gender および Exercise Frequency 列の形式を、オプション セットが制限されたポップアップ メニューに変更します。Gender 列では、Male または Female の値をユーザーに選択させます。Exercise Frequency 列では、オプション Very FrequentlySomewhat FrequentlyNot Very Frequently の中からユーザーに選択させます。

set(t, 'ColumnFormat', {[] [] {'Male' 'Female'} [] [] [] ...
       {'Very Frequently' 'Somewhat Frequently' 'Not Very Frequently'} []});

最後に、Age 列の値が 0 から 120 の間になるように制限します。そのためには、CellEditCallback を追加して、uitable データに行う編集を検証します。以下のコールバック関数を使用してください。

   function AgeVerificationCallback(o, e)
   if (e.Indices(2) == 2 && ...
       (e.NewData < 0 || e.NewData > 120))
       tableData = get(o, 'data');
       tableData{e.Indices(1), e.Indices(2)} = e.PreviousData;
       set(o, 'data', tableData);
       error('Age value must be between 0 and 120.')
   end

CellEditCallback としてこの関数を追加することで、Age 列内の値の編集が許容範囲 (すなわち、0 から 120 の間) にない場合、変更は無効になります。すなわち、セル内の値が元の値に戻されます。

set(t, 'CellEditCallback', @AgeVerificationCallback);

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