Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

uimenu

메뉴 또는 메뉴 항목 만들기

설명

m = uimenu는 현재 Figure 내에 메뉴를 만들고 Menu 객체를 반환합니다. 사용할 수 있는 Figure가 없으면 MATLAB®figure 함수를 호출하여 Figure를 만듭니다.

예제

m = uimenu(Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 메뉴 속성값을 지정합니다.

m = uimenu(parent)는 지정된 부모 컨테이너에 메뉴를 만듭니다. 부모 컨테이너는 figure 또는 uifigure 함수를 사용하여 만든 Figure일 수도 있고 또다른 Menu 객체일 수도 있습니다. uimenu의 속성값은 앱을 figure 함수로 만들었는지 아니면 uifigure 함수로 만들었는지에 따라 약간 달라집니다. 자세한 내용은 이름-값 인수 항목을 참조하십시오.

예제

m = uimenu(parent,Name,Value)는 부모 컨테이너와 하나 이상의 속성값을 지정합니다.

예제

모두 축소

디폴트 메뉴 모음을 표시하는 Figure를 만듭니다. 메뉴와 메뉴 항목을 추가합니다.

f = figure('Toolbar','none');
m = uimenu('Text','Options');
mitem = uimenu(m,'Text','Reset');

A figure window with a menu bar. The menu items are "File", "Edit", "View", "Insert", "Tools", "Desktop", "Window", "Help", and "Options". The "Options" item is selected, and displays a drop-down with a "Reset" option.

바로 가기 키가 있는 메뉴 항목을 메뉴 모음에 추가하고 메뉴 항목이 선택되었을 때 실행되는 콜백을 정의합니다.

먼저 importmenu.m이라는 프로그램 파일을 생성합니다. 프로그램 파일 내에서 다음을 수행합니다.

  • Figure를 생성합니다.

  • Import라는 메뉴를 추가합니다. '&Import'를 텍스트 레이블로 지정하여 메뉴의 니모닉 바로 가기 키를 만듭니다.

  • 메뉴 항목을 만들고 니모닉 바로 가기 키와 단축 바로 가기 키를 지정합니다.

  • 사용자가 메뉴 항목을 클릭하거나 니모닉 또는 단축 바로 가기 키를 사용하면 실행되는 MenuSelectedFcn 콜백을 정의합니다.

프로그램 파일을 실행합니다.

function importmenu
fig = uifigure;
m = uimenu(fig,'Text','&Import');
 
mitem = uimenu(m,'Text','&Text File');
mitem.Accelerator = 'T';
mitem.MenuSelectedFcn = @MenuSelected;
 
    function MenuSelected(src,event)
        file = uigetfile('*.txt');
    end
 
end

A menu bar with an "Import" item with a "Text File" sub-item. The "I" in "Import" and the "T" in "Text File" are underlined. The Ctrl+T keyboard shortcut is displayed to the right of the "Text File" item.

다음과 같이 키보드를 사용하여 메뉴 및 메뉴 항목과 상호 작용할 수 있습니다.

  • Alt+I를 눌러 Import 메뉴를 선택합니다.

  • Alt+I+T를 눌러 Text File 메뉴 항목을 선택하고 콜백을 실행합니다.

  • Text File 메뉴 항목을 선택하고 단축 키 Ctrl+T를 사용하여 콜백을 실행합니다.

Text File 메뉴 항목을 선택하면 열려는 파일 선택 대화 상자가 열리는데 확장자 필드는 텍스트 파일로 필터링된 상태로 열립니다.

File dialog box. The file extension filer drop-down list has the option "(*.txt.)" selected.

좌표축에서 그리드를 표시하도록 선택하거나 선택 취소할 수 있는 체크박스가 선택된 메뉴 항목을 만듭니다. 버튼을 눌러도 그리드가 표시되거나 숨겨지도록 누름 버튼이 있는 콜백을 공유합니다.

먼저 plotOptions.m이라는 프로그램 파일을 생성합니다. 프로그램 파일 내에서 다음을 수행합니다.

  • 누름 버튼이 있는 Figure와 그리드를 표시하는 좌표축을 만듭니다.

  • 니모닉이 있는 메뉴와 메뉴 항목을 추가합니다. 메뉴 항목이 선택되었다고 지정합니다.

  • 사용자가 메뉴 항목과 상호 작용하면 그리드를 숨기거나 표시하는 MenuSelectedFcn 콜백을 정의합니다.

  • 메뉴 항목과 동일한 콜백 함수를 사용하는 ButtonPushedFcn을 정의합니다.

프로그램 파일을 실행합니다.

function plotOptions
fig = uifigure;
ax = uiaxes(fig);
grid(ax);
btn = uibutton(fig,'Text','Show Grid');
btn.Position = [155 325 100 20];

m = uimenu(fig,'Text','&Plot Options');
mitem = uimenu(m,'Text','Show &Grid','Checked','on');
mitem.MenuSelectedFcn = @ShowGrid;
btn.ButtonPushedFcn = @ShowGrid;

    function ShowGrid(src,event)
        grid(ax);
        if strcmp(mitem.Checked,'on')
            mitem.Checked = 'off';
        else
            mitem.Checked = 'on';
        end
    end
end

An app with a menu bar, button, and set of axes. The "Show Grid" menu item has a checked check box to the left of the text.

입력 인수

모두 축소

부모 컨테이너로, figure 또는 uifigure 함수를 사용하여 만든 Figure 객체나 또다른 Menu 객체나 ContextMenu 객체로 지정됩니다. 부모 컨테이너를 지정하지 않으면 MATLAB은 figure를 호출하여 Figure를 만든 다음 이 Figure의 메뉴 모음에 메뉴를 배치합니다. 메뉴에 메뉴 항목을 추가하거나 메뉴 항목을 중첩하려면 부모 컨테이너를 기존 Menu 객체로 지정합니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: m = uimenu('Text','Open')은 메뉴를 만들고 메뉴의 레이블을 'Open'으로 설정합니다.

참고

여기에 나와 있는 속성은 사용 가능한 속성의 일부에 불과합니다. 전체 목록을 보려면 Menu 속성 항목을 참조하십시오.

메뉴 레이블로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 이 속성은 메뉴 또는 메뉴 항목에 나타나는 레이블을 지정합니다.

대/소문자를 구분하는 다음의 예약어 'default', 'remove', 'factory'는 사용하지 마십시오. 예약어를 꼭 사용해야 하면 해당 단어 앞에 백슬래시 문자를 지정하십시오. 예를 들어, 'default''\default'로 지정합니다.

레이블 텍스트에 앰퍼샌드(&) 문자를 사용하여 니모닉 바로 가기 키(Alt+mnemonic)를 지정할 수 있습니다. 앰퍼샌드 뒤에 오는 문자는 Alt를 눌렀을 때 메뉴에서 밑줄이 그어져 나타납니다. Alt 키를 누른 채로 표시된 문자를 눌러 메뉴 항목을 선택할 수 있습니다.

니모닉 키를 사용하려면 앱에서 정의하는 모든 메뉴와 메뉴 항목에 대한 니모닉 키를 지정해야 합니다. 일부 메뉴 또는 메뉴 항목에 대한 니모닉 키만 정의하는 경우 Alt 키를 눌러도 아무런 효과가 없습니다.

다음 표에서 몇 가지 예를 볼 수 있습니다.

텍스트 값니모닉 힌트가 있는 메뉴 레이블
'&Open Selection'

Open Selection menu label. The "O" in "Open" is underlined.

'O&pen Selection'

Open Selection menu label. The "p" in "Open" is underlined.

'&Save && Go'

Open Selection menu label. The "S" in "Save & Go" is underlined.

바로 가기 키로, 하나의 문자를 포함하는 문자형 또는 string형으로 지정됩니다. 이 속성을 사용하여 메뉴 항목을 선택하는 바로 가기 키를 정의할 수 있습니다.

예: mitem.Accelerator = "H"

단축 키 값을 지정하면 사용자는 마우스를 사용하는 대신, 문자와 또 하나의 키를 눌러 메뉴 항목을 선택할 수 있습니다. 키 시퀀스는 플랫폼별로 다릅니다.

  • Windows® 시스템: Ctrl+accelerator

  • Macintosh 시스템: Command+accelerator

  • Linux® 시스템: Ctrl+accelerator

단축 키를 사용할 때 유의해야 할 점:

  • 단축 키 시퀀스를 입력할 때 앱 창에 초점이 맞춰져 있어야 합니다.

  • 최상위 수준 메뉴에는 단축 키를 사용할 수 없습니다.

  • 단축 키는 메뉴 항목이 다음 조건을 모두 충족할 때만 작동합니다.

    • 하위 메뉴 항목을 포함하지 않습니다.

    • 콜백 함수를 실행합니다.

    • Visible 속성이 'on'으로 설정되어 있습니다.

    • 해당 단축 키 값이 같은 앱 내에서 다른 활성 메뉴 항목에 이미 할당되어 있지 않습니다.

선택한 메뉴의 콜백 함수로, 다음 값 중 하나로 지정됩니다.

  • 함수 핸들.

  • 첫 번째 요소가 함수 핸들인 셀형 배열. 이 셀형 배열의 그 다음 요소들은 콜백 함수로 전달할 인수입니다.

  • 유효한 MATLAB 표현식이 포함된 문자형 벡터(권장되지 않음). MATLAB은 이 표현식을 기본 작업 공간에서 실행합니다.

콜백 속성값을 함수 핸들, 셀형 배열 또는 문자형 벡터로 지정하는 방법에 대한 자세한 내용은 콜백 함수 지정하기 항목을 참조하십시오.

콜백은 메뉴 항목의 위치와 상호 작용의 유형에 따라 반응합니다.

  • 메뉴를 마우스 왼쪽 버튼으로 클릭하면 메뉴가 확장되고 콜백이 트리거됩니다.

  • 메뉴가 확장되어 있을 때 다른 부모 메뉴(또는 최상위 메뉴) 위에 커서를 놓으면 그 메뉴가 확장되고 콜백이 트리거됩니다.

참고

콜백을 사용하여 동적으로 메뉴 항목을 변경하지 마십시오. 콜백에서 메뉴 항목을 삭제, 추가 및 교체하면 빈 메뉴가 만들어질 수 있습니다. 대신, Visible 속성을 사용하여 메뉴 항목을 숨기거나 표시하십시오. 또한 Enable 속성을 설정하여 메뉴 항목을 활성화하고 비활성화할 수 있습니다. 메뉴 항목을 완전히 다시 채우려면 메뉴 항목을 삭제하고 콜백 밖에서 만드십시오.

상황별 메뉴와 연결된 메뉴

메뉴 구성요소가 상황별 메뉴(즉, Figure 창 위쪽의 메뉴 항목이 아님)와 연결된 경우, 이 콜백 함수는 사용자와 앱의 상호 작용에 대한 특정 정보에 액세스할 수 있습니다. MATLAB은 이 정보를 콜백 함수에 대한 두 번째 인수로서 MenuSelectedData 객체에 전달합니다. 앱 디자이너에서 이 인수는 event로 명명됩니다. 점 표기법을 사용하여 객체 속성을 쿼리할 수 있습니다. 예를 들어, event.ContextObject는 사용자가 연결된 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 구성요소에 대한 정보를 반환합니다.

참고

모든 Menu 객체에 대해 MenuSelectedFcn 콜백을 지정할 수 있습니다. 그러나, 콜백 이벤트 데이터의 MenuSelectedData 객체는 메뉴가 속한 상황별 메뉴가 다음 두 가지 조건을 모두 충족하는 경우에만 사용할 수 있습니다.

  • 상황별 메뉴가 uifigure 기반 앱(예: 앱 디자이너에서 만든 앱)과 연결되어 있음.

  • 상황별 메뉴가 UI 구성요소(Axes, Line 객체 같은 그래픽스 객체가 아님)와 연결되어 있음.

다음 표에는 MenuSelectedData 객체 속성이 나열되어 있습니다.

속성
ContextObject앱 사용자가 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 객체
InteractionInformation

앱 사용자가 상황별 메뉴를 열기 위해 구성요소에서 마우스 오른쪽 버튼으로 클릭한 위치에 대한 정보. 이 정보는 ContextObject의 값에 따라 각각 해당 속성을 갖는 객체로 저장됩니다.

예를 들어, ContextObjectTable 객체인 경우 InteractionInformation은 테이블에서 사용자가 마우스 오른쪽 버튼으로 클릭한 행과 열에 대한 정보를 저장합니다. InteractionInformation이 가질 수 있는 속성에 대한 자세한 내용은 다음 표를 참조하십시오.

Source콜백을 실행하는 상황별 메뉴 객체
EventName'MenuSelected'

다음 표에는 InteractionInformation 객체 속성이 나열되어 있습니다. 속성은 앱 사용자가 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 객체에 따라 달라집니다.

ContextObjectInteractionInformation 속성
모두Location

ContextObject의 부모 컨테이너의 왼쪽 하단 코너를 기준으로 사용자가 마우스 오른쪽 버튼을 클릭한 위치로, [x y] 형식의 요소를 2개 가진 벡터로 반환됩니다.

x의 값은 부모 컨테이너의 왼쪽 가장자리부터 마우스 오른쪽 버튼을 클릭한 위치까지의 가로 거리를 나타냅니다. y의 값은 부모 컨테이너의 하단 가장자리부터 마우스 오른쪽 버튼을 클릭한 위치까지의 세로 거리를 나타냅니다. 거리는 픽셀 단위로 측정됩니다.

ScreenLocation

주 디스플레이의 왼쪽 하단 코너를 기준으로 사용자가 마우스 오른쪽 버튼을 클릭한 위치로, [x y] 형식의 요소를 2개 가진 벡터로 반환됩니다.

x의 값은 디스플레이의 왼쪽 가장자리부터 마우스 오른쪽 버튼을 클릭한 위치까지의 가로 거리를 나타냅니다. y의 값은 디스플레이의 하단 가장자리부터 마우스 오른쪽 버튼을 클릭한 위치까지의 세로 거리를 나타냅니다. 거리는 픽셀 단위로 측정됩니다.

TableDisplayRow

테이블에 표시되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 행으로, 숫자형 스칼라로 반환됩니다.

사용자가 테이블을 정렬하지 않은 경우 DisplayRowRow와 동일한 값을 가집니다. 사용자가 테이블 UI 구성요소에서 어떤 행과도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 DisplayRow는 빈 배열입니다.

DisplayColumn

테이블에 표시되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 열로, 숫자형 스칼라로 반환됩니다.

사용자가 테이블을 재정렬하지 않은 경우 DisplayColumnColumn과 동일한 값을 가집니다. 사용자가 테이블 UI 구성요소에서 어떤 열과도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 DisplayColumn은 빈 배열입니다.

Row

행이 원래 테이블 데이터와 대응되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 행으로, 숫자형 스칼라로 반환됩니다.

사용자가 테이블을 정렬하지 않은 경우 RowDisplayRow와 동일한 값을 가집니다. 사용자가 테이블 UI 구성요소에서 어떤 행과도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 Row는 빈 배열입니다.

Column

열이 원래 테이블 데이터와 대응되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 열로, 숫자형 스칼라로 반환됩니다.

사용자가 테이블을 재정렬하지 않은 경우 ColumnDisplayColumn과 동일한 값을 가집니다. 사용자가 테이블 UI 구성요소에서 어떤 열과도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 Column은 빈 배열입니다.

RowHeader사용자가 테이블 행 헤더를 마우스 오른쪽 버튼으로 클릭했는지 여부로, 논리값 0(false) 또는 1(true)로 반환됩니다.
ColumnHeader사용자가 테이블 열 헤더를 마우스 오른쪽 버튼으로 클릭했는지 여부로, 논리값 0(false) 또는 1(true)로 반환됩니다.
TreeNode

마우스 오른쪽 버튼으로 클릭한 노드로, TreeNode 객체로 반환됩니다.

사용자가 트리에서 어떤 노드와도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 Node는 빈 배열입니다.

Level

마우스 오른쪽 버튼으로 클릭한 노드의 수준으로, 숫자형 스칼라로 반환됩니다. Tree 객체를 직접 부모로 갖는 노드는 수준 1에 있으며, 수준 1의 노드를 부모로 갖는 노드는 수준 2에 있는 식입니다.

사용자가 트리에서 어떤 노드와도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 Level은 빈 배열입니다.

ListBoxItem

마우스 오른쪽 버튼으로 클릭한 목록 상자 항목의 인덱스로, 숫자형 스칼라로 반환됩니다.

사용자가 목록 상자에서 어떤 항목과도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 Item은 빈 배열입니다.

구분선 모드로, 'off' 또는 'on'이나 숫자형 값 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. 값 'on'true와 동일하고 값 'off'false와 동일합니다. 따라서 이 속성의 값을 논리값으로 사용할 수 있습니다. 값은 matlab.lang.OnOffSwitchState 유형의 on/off 논리값으로 저장됩니다.

이 속성을 'on'으로 설정하면 메뉴 항목 위에 분할선이 그려집니다.

참고

메뉴 항목이 최상위 메뉴 항목일 때는 Separator 속성은 무시됩니다.

메뉴 확인 표시자로, 'off' 또는 'on'이나 숫자형 값 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. 값 'on'true와 동일하고 값 'off'false와 동일합니다. 따라서 이 속성의 값을 논리값으로 사용할 수 있습니다. 값은 matlab.lang.OnOffSwitchState 유형의 on/off 논리값으로 저장됩니다.

이 속성을 'on'으로 설정하면 대응하는 메뉴 항목 옆에 확인 표시가 삽입됩니다. 이 속성을 'off'로 설정하면 확인 표시가 제거됩니다. 이 기능을 사용하여 응용 프로그램에서 기능을 활성화하거나 비활성화하는 메뉴 항목의 상태를 나타낼 수 있습니다.

참고

메뉴 항목이 다음 조건일 때는 Checked 속성은 무시됩니다.

  • 최상위 메뉴 항목

  • 하나 이상의 자식 메뉴 항목이 들어 있는 메뉴 항목

버전 내역

R2006a 이전에 개발됨