Main Content

특정 컴포넌트에 대한 콜백

참고

GUIDE 환경은 향후 릴리스에서 제거될 예정입니다. GUIDE가 제거된 후에도 기존 GUIDE 앱은 MATLAB®에서 계속 실행할 수 있지만 GUIDE에서 편집할 수는 없게 됩니다.

기존의 GUIDE 앱을 계속 편집하려면 GUIDE 마이그레이션 전략 항목에서 향후 MATLAB 릴리스와의 앱 호환성을 유지하는 방법에 대한 내용을 참고하십시오. 대화형 방식으로 새 앱을 만들려면 앱 디자이너를 사용하여 앱 개발하기 항목을 대신 참조하십시오.

UI 컴포넌트의 동작을 코딩하려면 사용 중인 컴포넌트 유형에 맞는 작업을 수행해야 합니다. 이 항목에는 각 컴포넌트 유형에 대한 간단한 콜백 예시가 포함되어 있습니다. 콜백 코딩에 대한 일반적인 정보는 GUIDE에서 콜백 작성하기 항목 또는 프로그래밍 방식으로 만든 앱에 대한 콜백 만들기 항목을 참조하십시오.

예시 코드를 사용하는 방법

GUIDE에서 작업하는 경우, 레이아웃에 있는 컴포넌트를 마우스 오른쪽 버튼으로 클릭하고 콜백 보기 메뉴에서 적절한 콜백 속성을 선택합니다. 이렇게 하면 컴포넌트에 자동으로 연결된 빈 콜백 함수가 만들어집니다. GUIDE가 만든 특정 함수의 이름은 컴포넌트의 Tag 속성에 따라 결정되므로, 사용자의 함수 이름과 예시 코드의 함수 이름은 약간 다를 수 있습니다. GUIDE가 사용자의 코드에서 만든 함수 이름을 변경하지 마십시오. 앱에서 예시 코드를 사용하려면 예시 함수 본문의 코드를 사용자의 함수 본문으로 복사하십시오.

누름 버튼

다음 코드는 GUIDE에서 사용하는 누름 버튼 콜백 함수의 예시입니다. 최종 사용자가 누름 버튼을 클릭하면 함수가 실행되도록 아래 함수와 누름 버튼의 Callback 속성을 연결합니다.

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
display('Goodbye');
close(gcf);

코드의 첫 번째 줄인 display('Goodbye')는 명령 창에 'Goodbye'를 표시합니다. 다음 라인은 gcf를 사용하여 UI 창을 식별한 후 닫습니다.

토글 버튼

다음 코드는 GUIDE에서 사용하는 토글 버튼 콜백 함수의 예시입니다. 최종 사용자가 토글 버튼을 클릭하면 함수가 실행되도록 아래 함수와 토글 버튼의 Callback 속성을 연결합니다.

function togglebutton1_Callback(hObject,eventdata,handles)
% hObject    handle to togglebutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of togglebutton1
button_state = get(hObject,'Value');
if button_state == get(hObject,'Max')
	display('down');
elseif button_state == get(hObject,'Min')
	display('up');
end

토글 버튼을 놓으면 토글 버튼의 Value 속성은 Min 속성과 일치합니다. 토글 버튼을 누르면 ValueMax 값으로 변경됩니다. 이 콜백 함수는 토글 버튼의 Value 속성을 가져온 다음, 이 속성을 Max 속성 및 Min 속성과 비교합니다. 버튼을 누르면 함수는 명령 창에 'down'을 표시합니다. 버튼을 놓으면 함수는 'up'을 표시합니다.

라디오 버튼

다음 코드는 GUIDE에서 사용하는 라디오 버튼 콜백 함수의 예시입니다. 최종 사용자가 라디오 버튼을 클릭하면 함수가 실행되도록 아래 함수와 라디오 버튼의 Callback 속성을 연결합니다.

function radiobutton1_Callback(hObject, eventdata, handles)
% hObject    handle to radiobutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton1

if (get(hObject,'Value') == get(hObject,'Max'))
	display('Selected');
else
	display('Not selected');
end

라디오 버튼을 선택하지 않으면 라디오 버튼의 Value 속성은 Min 속성과 일치합니다. 라디오 버튼을 선택하면 ValueMax 값으로 변경됩니다. 이 콜백 함수는 라디오 버튼의 Value 속성을 가져온 다음, 이 속성을 Max 속성 및 Min 속성과 비교합니다. 버튼을 선택하면 함수는 명령 창에 'Selected'를 표시합니다. 버튼을 선택하지 않으면 함수는 'Not selected'를 표시합니다.

참고

버튼 그룹을 사용하여 라디오 버튼을 하나만 선택하도록 관리합니다. 자세한 내용은 버튼 그룹 항목을 참조하십시오.

체크박스

다음 코드는 GUIDE에서 사용하는 체크박스 콜백 함수의 예시입니다. 최종 사용자가 체크박스를 클릭하면 함수가 실행되도록 아래 함수와 체크박스의 Callback 속성을 연결합니다.

function checkbox1_Callback(hObject, eventdata, handles)
% hObject    handle to checkbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of checkbox1

if (get(hObject,'Value') == get(hObject,'Max'))
	display('Selected');
else
	display('Not selected');
end

체크박스를 선택하지 않으면 체크박스의 Value 속성은 Min 속성과 일치합니다. 체크박스를 선택하면 ValueMax 값으로 변경됩니다. 이 콜백 함수는 체크박스의 Value 속성을 가져온 다음, 이 속성을 Max 속성 및 Min 속성과 비교합니다. 체크박스를 선택하면 함수는 명령 창에 'Selected'를 표시합니다. 체크박스를 선택하지 않으면 함수는 'Not selected'를 표시합니다.

편집가능 텍스트 필드

다음 코드는 GUIDE에서 사용하는 편집가능 텍스트 필드에 대한 콜백의 예시입니다. 최종 사용자가 텍스트 필드에 입력하면 함수가 실행되도록 아래 함수와 uicontrol의 Callback 속성을 연결합니다.

function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents as double
input = get(hObject,'String');
display(input);

사용자가 텍스트 필드에 문자를 입력하고 Enter 키를 누르면 콜백 함수는 해당 문자를 가져와 명령 창에 표시합니다.

사용자가 여러 텍스트 줄을 입력할 수 있도록 하려면 Max 속성과 Min 속성을 Max - Min > 1 조건을 충족하는 숫자형 값으로 설정하십시오. 예를 들어, 이 부등식을 충족하도록 Max2, Min0으로 설정합니다. 이 경우, 최종 사용자가 UI에서 텍스트 필드의 외부 영역을 클릭하면 콜백 함수가 트리거됩니다.

숫자형 값 가져오기

편집가능 텍스트 필드의 내용을 숫자형 값으로 해석하려면 str2double 함수를 사용하여 문자를 숫자로 변환하십시오. str2double 함수는 숫자형이 아닌 입력값에 대해 NaN을 반환합니다.

다음 코드는 사용자의 입력값을 숫자형 값으로 해석하는 편집가능 텍스트 필드 콜백 함수의 예시입니다.

function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents as a double
input = str2double(get(hObject,'String'));
if isnan(input)
  errordlg('You must enter a numeric value','Invalid Input','modal')
  uicontrol(hObject)
  return
else
  display(input);
end

최종 사용자가 편집가능 텍스트 필드에 값을 입력하고 Enter 키를 누르면 콜백 함수는 String 속성값을 가져와 숫자형 값으로 변환합니다. 그런 다음, 값이 NaN(숫자형이 아님)인지 확인합니다. 입력값이 NaN이면 콜백은 오류 대화 상자를 표시합니다.

슬라이더

다음 코드는 GUIDE에서 사용하는 슬라이더 콜백 함수의 예시입니다. 최종 사용자가 슬라이더를 이동하면 함수가 실행되도록 아래 함수와 슬라이더의 Callback 속성을 연결합니다.

function slider1_Callback(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine...
slider_value = get(hObject,'Value');
display(slider_value);

최종 사용자가 슬라이더를 이동하면 콜백 함수는 슬라이더의 현재 값을 가져와 명령 창에 표시합니다. 기본적으로 슬라이더의 범위는 [0, 1]입니다. 범위를 수정하려면 슬라이더의 Max 속성과 Min 속성을 각각 최댓값과 최솟값으로 설정하십시오.

목록 상자

목록 상자의 항목 채우기

GUIDE를 사용하여 앱을 개발하는 경우, 목록 상자의 CreateFcn 콜백을 사용하여 목록 상자에 항목을 추가합니다.

다음 코드는 목록 상자를 항목 Red, Green, Blue로 채우는 CreateFcn 콜백의 예시입니다.

function listbox1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to listbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns

% Hint: listbox controls usually have a white background on Windows.
if ispc && isequal(get(hObject,'BackgroundColor'), ...
    get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
set(hObject,'String',{'Red';'Green';'Blue'});
마지막 라인 set(hObject,'String',{'Red';'Green';'Blue'})가 목록 상자의 내용을 채웁니다.

선택한 항목 변경하기

최종 사용자가 목록 상자 항목을 선택하면 목록 상자의 Value 속성은 목록에서 항목의 위치에 해당하는 숫자로 변경됩니다. 예를 들어, 값 1은 목록의 첫 번째 항목에 해당합니다. 코드에서 선택 항목을 변경하려면 Value 속성을 1과 목록의 항목 개수 사이의 다른 숫자로 변경하십시오.

예를 들어, 다음과 같이 GUIDE에서 handles 구조체를 사용하여 목록 상자에 액세스하고 Value 속성을 변경할 수 있습니다.

set(handles.listbox1,'Value',2)

목록 상자의 Tag 속성값에 따라 첫 번째 인수 handles.listbox1은 사용자의 코드에서 다를 수 있습니다.

콜백 함수 작성하기

다음 코드는 GUIDE에서 사용하는 목록 상자 콜백 함수의 예시입니다. 최종 사용자가 목록 상자에서 항목을 선택하면 함수가 실행되도록 아래 함수와 목록 상자의 Callback 속성을 연결합니다.

function listbox1_Callback(hObject, eventdata, handles)
% hObject    handle to listbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns contents
% contents{get(hObject,'Value')} returns selected item from listbox1
items = get(hObject,'String');
index_selected = get(hObject,'Value');
item_selected = items{index_selected};
display(item_selected);

최종 사용자가 목록 상자에서 항목을 선택하면 콜백 함수는 다음 작업을 수행합니다.

  • 목록 상자의 항목을 모두 가져와 변수 items에 저장합니다.

  • 선택한 항목의 숫자 인덱스를 가져와 변수 index_selected에 저장합니다.

  • 선택한 항목의 값을 가져와 변수 item_selected에 저장합니다.

  • MATLAB 명령 창에 선택한 항목을 표시합니다.

예제 GUIDE의 대화형 방식 목록 상자 앱에서는 목록 상자를 디렉터리 이름으로 채우는 방법을 보여줍니다.

팝업 메뉴

팝업 메뉴의 항목 채우기

GUIDE를 사용하여 앱을 개발하는 경우, 팝업 메뉴의 CreateFcn 콜백을 사용하여 팝업 메뉴에 항목을 추가합니다.

다음 코드는 팝업 메뉴를 항목 Red, Green, Blue로 채우는 CreateFcn 콜백의 예시입니다.

function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns

% Hint: popupmenu controls usually have a white background on Windows.
if ispc && isequal(get(hObject,'BackgroundColor'),...
    get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
set(hObject,'String',{'Red';'Green';'Blue'});
마지막 라인 set(hObject,'String',{'Red';'Green';'Blue'})가 팝업 메뉴의 내용을 채웁니다.

선택한 항목 변경하기

최종 사용자가 항목을 선택하면 팝업 메뉴의 Value 속성은 메뉴에서 항목의 위치에 해당하는 숫자로 변경됩니다. 예를 들어, 값 1은 목록의 첫 번째 항목에 해당합니다. 코드에서 선택 항목을 변경하려면 Value 속성을 1과 메뉴의 항목 개수 사이의 다른 숫자로 변경하십시오.

예를 들어, 다음과 같이 GUIDE에서 handles 구조체를 사용하여 팝업 메뉴에 액세스하고 Value 속성을 변경할 수 있습니다.

set(handles.popupmenu1,'Value',2)

팝업 메뉴의 Tag 속성값에 따라 첫 번째 인수 handles.popupmenu1은 사용자의 코드에서 다를 수 있습니다.

콜백 함수 작성하기

다음 코드는 GUIDE에서 사용하는 팝업 메뉴 콜백 함수의 예시입니다. 최종 사용자가 메뉴에서 항목을 선택하면 함수가 실행되도록 아래 함수와 팝업 메뉴의 Callback 속성을 연결합니다.

function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns contents...
%        contents{get(hObject,'Value')} returns selected item...
items = get(hObject,'String');
index_selected = get(hObject,'Value');
item_selected = items{index_selected};
display(item_selected);

사용자가 팝업 메뉴에서 항목을 선택하면 콜백 함수는 다음 작업을 수행합니다.

  • 팝업 메뉴의 항목을 모두 가져와 변수 items에 저장합니다.

  • 선택한 항목의 숫자 인덱스를 가져와 변수 index_selected에 저장합니다.

  • 선택한 항목의 값을 가져와 변수 item_selected에 저장합니다.

  • MATLAB 명령 창에 선택한 항목을 표시합니다.

패널

패널이 버튼 클릭에 응답하도록 설정하기

최종 사용자가 패널에서 마우스 오른쪽 또는 왼쪽 버튼을 클릭하면 실행되는 콜백 함수를 만들 수 있습니다. GUIDE에서 작업하는 경우, 레이아웃에 있는 패널을 마우스 오른쪽 버튼으로 클릭하고 콜백 보기 > ButtonDownFcn을 선택하여 콜백 함수를 만듭니다.

다음 코드는 GUIDE에서 사용하는 ButtonDownFcn 콜백의 예시입니다.

function uipanel1_ButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to uipanel1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
display('Mouse button was pressed');
최종 사용자가 패널을 클릭하면 이 함수는 명령 창에 텍스트 'Mouse button was pressed'를 표시합니다.

창과 패널의 크기 조정하기

기본적으로는 GUIDE UI의 크기를 조정할 수 없지만, > GUI 옵션을 선택하고 크기 조정 동작비례로 설정하여 이 동작을 재정의할 수 있습니다.

UI 창의 크기를 조정할 수 있는 경우, 사용자가 크기를 조정하면 창에서 컴포넌트의 위치가 조정됩니다. UI에 패널이 있으면 패널 크기도 창 크기와 함께 변경됩니다. 패널 크기가 조정될 때 앱이 특정 작업을 수행하도록 하려면 패널의 SizeChangedFcn 콜백을 사용하십시오.

다음 코드는 GUIDE 앱에서 사용하는 패널의 SizeChangedFcn 콜백 예시입니다. 사용자가 창 크기를 조정하면 이 함수는 패널 내 정적 텍스트의 글꼴 크기를 수정합니다.

function uipanel1_SizeChangedFcn(hObject, eventdata, handles)
% hObject    handle to uipanel1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(hObject,'Units','Points')               
panelSizePts = get(hObject,'Position');     
panelHeight = panelSizePts(4);
set(hObject,'Units','normalized');          
newFontSize = 10 * panelHeight / 115;       
texth = findobj('Tag','text1');
set(texth,'FontSize',newFontSize);

UI에 중첩된 패널이 포함되어 있으면 패널은 안쪽에서 바깥쪽 순서로(자식에서 부모 순서로) 크기가 조정됩니다.

참고

패널 내 텍스트의 크기가 자동으로 조정되도록 하려면 fontUnits 속성을 'normalized'로 설정하십시오.

버튼 그룹

버튼 그룹은 패널과 유사한 역할을 하지만, 그 외에 라디오 버튼과 토글 버튼을 하나만 선택하도록 관리하는 작업도 합니다. 버튼 그룹에 라디오 버튼 또는 토글 버튼이 여러 개 포함되어 있으면 버튼 그룹에서 최종 사용자는 그중 하나만 선택할 수 있습니다.

버튼 그룹 내에 있는 개별 버튼에 대한 콜백을 코딩하지 마십시오. 대신 버튼 그룹의 SelectionChangedFcn 콜백을 사용하여 최종 사용자가 버튼을 선택하면 응답하도록 설정합니다.

다음 코드는 라디오 버튼 2개와 토글 버튼 2개를 관리하는 버튼 그룹의 SelectionChangedFcn 콜백 예시입니다.

function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
% hObject    handle to the selected object in uibuttongroup1 
% eventdata  structure with the following fields
%	EventName: string 'SelectionChanged' (read only)
%	OldValue: handle of the previously selected object or empty
%	NewValue: handle of the currently selected object
% handles    structure with handles and user data (see GUIDATA)
switch get(eventdata.NewValue,'Tag') % Get Tag of selected object.
    case 'radiobutton1'
        display('Radio button 1');
    case 'radiobutton2'
        display('Radio button 2');
    case 'togglebutton1'
        display('Toggle button 1');
    case 'togglebutton2'
        display('Toggle button 2');
end

최종 사용자가 버튼 그룹에서 라디오 버튼 또는 토글 버튼 하나를 선택하면 이 함수는 버튼의 Tag 속성을 참조하여 사용자가 어떤 버튼을 선택했는지 확인합니다. 그런 다음, 함수는 적합한 case 내의 코드를 실행합니다.

참고

버튼 그룹의 SelectedObject 속성에는 사용자가 선택한 버튼에 대한 핸들이 포함됩니다. 코드의 다른 위치에서도 이 속성을 사용하면 사용자가 선택한 버튼을 확인할 수 있습니다.

메뉴 항목

이 섹션의 코드에는 최종 사용자가 메뉴에서 Edit > Copy > To File을 선택할 때 응답하는 콜백 함수 예시가 포함되어 있습니다.

Figure window with a menu bar. The menu has two options, "File" and "Edit". The "Edit" option is selected and contains a submenu with items "Cut", "Copy", and "Paste". The "Copy" option is highlighted and contains another submenu with one item, "To File".

% --------------------------------------------------------------------
function edit_menu_Callback(hObject, eventdata, handles)
% hObject    handle to edit_menu (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
display('Edit menu selected');

% --------------------------------------------------------------------
function copy_menu_item_Callback(hObject, eventdata, handles)
% hObject    handle to copy_menu_item (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
display('Copy menu item selected');

% --------------------------------------------------------------------
function tofile_menu_item_Callback(hObject, eventdata, handles)
% hObject    handle to tofile_menu_item (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename,path] = uiputfile('myfile.m','Save file name');
GUIDE 메뉴 편집기에서 지정한 태그 이름에 따라 함수 이름은 사용자의 코드에서 다를 수 있습니다.

다음 동작을 수행하면 콜백 함수가 트리거됩니다.

  • 최종 사용자가 Edit 메뉴를 선택하면 edit_menu_Callback 함수는 텍스트 'Edit menu selected'를 MATLAB 명령 창에 표시합니다.

  • 최종 사용자가 마우스를 Copy 메뉴 항목 위로 가져가면 copy_menu_item_Callback 함수는 텍스트 'Copy menu item selected'를 MATLAB 명령 창에 표시합니다.

  • 최종 사용자가 To File 메뉴 항목에서 마우스 버튼을 클릭했다가 놓으면 tofile_menu_item_Callback 함수는 최종 사용자에게 대상 폴더 이름/대상 파일 이름을 선택하도록 요청하는 대화 상자를 표시합니다.

tofile_menu_item_Callback 함수는 최종 사용자에게 대상 파일/대상 폴더를 지정하도록 요청하는 uiputfile 함수를 호출합니다. 최종 사용자에게 기존 파일을 선택하도록 요청하는 메뉴 항목을 만들려면(예를 들어, UI에 Open File 메뉴 항목이 있는 경우) uigetfile 함수를 사용하십시오.

이와 같은 계단식 메뉴를 만들고 마우스를 이 메뉴 위로 가져가면 중간 메뉴 항목이 트리거됩니다. 메뉴 항목 위에서 마우스 버튼을 놓으면 마지막 종료 메뉴 항목이 트리거됩니다.

메뉴 항목 확인 표시를 업데이트하는 방법

옵션이 활성화되었음을 나타내는 확인 표시를 메뉴 항목 옆에 추가할 수 있습니다. 기본적으로 메뉴 항목에 확인 표시를 하도록 설정하려면 GUIDE의 메뉴 편집기에서 이 항목에 확인 표시를 선택하십시오. 최종 사용자가 메뉴 항목을 선택할 때마다 콜백 함수는 확인 표시를 설정하거나 해제할 수 있습니다.

다음 코드에서는 메뉴 항목 옆의 확인 표시를 변경하는 방법을 보여줍니다.

if strcmp(get(hObject,'Checked'),'on')
    set(hObject,'Checked','off');
else 
    set(hObject,'Checked','on');
end

strcmp 함수는 2개의 문자형 벡터를 비교하여 서로 일치하면 true를 반환합니다. 위의 경우, 메뉴 항목의 Checked 속성이 문자형 벡터 'on'과 일치하면 이 함수는 true를 반환합니다.

GUIDE에서 메뉴 항목을 만드는 방법에 대한 자세한 내용은 GUIDE 앱의 메뉴 만들기 항목을 참조하십시오.

테이블

다음 코드는 테이블 콜백 함수 CellSelectionCallback의 예시입니다. 최종 사용자가 테이블에서 셀을 선택하면 함수가 실행되도록 아래 함수와 테이블의 CellSelectionCallback 속성을 연결합니다.

function uitable1_CellSelectionCallback(hObject, eventdata, handles)
% hObject    handle to uitable1 (see GCBO)
% eventdata  structure with the following fields
%   Indices: row and column indices of the cell(s) currently selected
% handles    structure with handles and user data (see GUIDATA)
data = get(hObject,'Data');
indices = eventdata.Indices;
r = indices(:,1);
c = indices(:,2);
linear_index = sub2ind(size(data),r,c);
selected_vals = data(linear_index);
selection_sum = sum(sum(selected_vals))

최종 사용자가 테이블에서 셀을 선택하면 이 함수는 다음 작업을 수행합니다.

  • 테이블의 모든 값을 가져와 변수 data에 저장합니다.

  • 선택한 셀의 인덱스를 가져옵니다. 이 인덱스는 data의 행과 열에 대응합니다.

  • 행 인덱스와 열 인덱스를 선형 인덱스로 변환합니다. 선형 인덱스를 사용하면 하나의 명령으로 배열에서 여러 개의 요소를 선택할 수 있습니다.

  • 최종 사용자가 선택한 값을 가져와 변수 selected_vals에 저장합니다.

  • 선택한 모든 값을 더해 그 결과를 명령 창에 표시합니다.

다음 코드는 테이블 콜백 함수 CellEditCallback의 예시입니다. 최종 사용자가 테이블의 셀을 편집하면 함수가 실행되도록 아래 함수와 테이블의 CellEditCallback 속성을 연결합니다.

function uitable1_CellEditCallback(hObject, eventdata, handles)
% hObject    handle to uitable1 (see GCBO)
% eventdata  structure with the following fields
%	Indices: row and column indices of the cell(s) edited
%	PreviousData: previous data for the cell(s) edited
%	EditData: string(s) entered by the user
%	NewData: EditData or its converted form set on the Data property.
% Empty if Data was not changed
% Error: error string when failed to convert EditData
data = get(hObject,'Data');
data_sum = sum(sum(data))
최종 사용자가 테이블 셀의 편집을 마치면 이 함수는 테이블의 모든 값을 가져와 총합을 계산합니다. 최종 사용자가 테이블의 셀을 편집할 수 있으려면 하나 이상의 열에서 ColumnEditable 속성이 true로 설정되어 있어야 합니다.

좌표축

이 섹션의 코드는 최종 사용자가 좌표축을 클릭할 때 트리거되는 좌표축의 ButtonDownFcn의 예시입니다.

Axes in a figure window

function axes1_ButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to axes1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
pt = get(hObject,'CurrentPoint')
최종 사용자가 좌표축을 클릭하면 포인터의 좌표가 MATLAB 명령 창에 표시됩니다(단, 이 좌표축을 부모로 갖는 다른 그래픽스 객체를 클릭할 때는 좌표가 표시되지 않음).

참고

대부분의 MATLAB 플로팅 함수는 데이터를 플로팅하기 전에 좌표축을 지우고 ButtonDownFcn 및 여러 axes 속성들을 재설정합니다. 최종 사용자가 대화형 방식으로 데이터를 플로팅할 수 있는 인터페이스를 만들려면 누름 버튼 같이 플로팅을 제어하는 컴포넌트를 제공해 보십시오. 이와 같은 컴포넌트의 속성은 플로팅 함수의 영향을 받지 않습니다. 좌표축의 ButtonDownFcn을 사용하여 데이터를 플로팅해야 하는 경우에는 line, patch, surface 같은 함수를 사용하십시오.

관련 항목