이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

테이블을 표시하는 프로그래밍 방식 앱

이 예제에서는 uitable 함수를 사용하여 앱에 테이블을 표시하는 방법을 다룹니다. 또한 테이블의 모양을 수정하는 방법과 실행 중인 앱에서 테이블의 편집을 제한하는 방법을 보여줍니다.

Figure 내에서 테이블 UI 구성요소 만들기

uitable 함수는 Figure에서 빈 UI 테이블을 만듭니다.

fig = uifigure('Position',[100 100 752 250]);
uit = uitable('Parent',fig,'Position',[25 50 700 200]);

여러 데이터형을 포함하는 테이블 만들기

여러 데이터형을 포함하고 이를 table형 배열에 저장하는 샘플 환자 데이터를 불러옵니다. 데이터가 테이블 구성요소로 구성된 셀에 드롭다운 목록으로 표시되도록 하려면 셀형 배열 변수를 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 속성은 1xN 셀형 배열로, 여기서 N은 테이블에 포함된 열의 개수입니다. 특정 열 너비를 설정하거나 'auto'를 사용하여 MATLAB®이 셀에 담긴 내용을 기반으로 너비를 설정하도록 합니다.

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

RowName 속성을 'numbered'로 설정하여 번호가 매겨진 행 제목을 추가합니다.

uit.RowName = 'numbered';

Position 속성을 사용하여 테이블의 위치와 크기를 조정합니다.

uit.Position = [15 25 565 200];

기본적으로 테이블 UI 구성요소에는 행 줄무늬 효과가 사용되는데 테이블의 끝에 도달할 때까지 지정된 배경색이 순서대로 돌아가며 적용됩니다. IRowStriping 속성을 'off'로 설정하면 테이블 UI 구성요소는 모든 행에 BackgroundColor 속성에 지정된 첫 번째 색만 사용합니다. 여기서는 행 줄무늬 효과를 'on'으로 유지하고 BackgroundColor 속성에 세 개의 다른 색을 설정합니다.

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 객체에는 흔히 사용되는 두 가지 콜백이 있습니다. CellSelectionCallback은 사용자가 다른 셀을 선택하면 실행됩니다. CellEditCallback은 사용자가 셀의 값을 변경하면 실행됩니다.

uit.CellEditCallback = @ageCheckCB;

예를 들어, Age 열에 0에서 120 사이의 값이 포함되도록 하려면 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