ContextMenu 속성
상황별 메뉴의 모양과 동작 제어
상황별 메뉴는 사용자가 그래픽스 객체나 UI 컴포넌트를 마우스 오른쪽 버튼으로 클릭할 때 표시되는 메뉴입니다. uicontextmenu
함수를 사용하여 상황별 메뉴를 만들고 속성을 설정합니다. 속성값을 변경하여, 상황별 메뉴의 모양과 동작을 수정할 수 있습니다. 다음과 같이 점 표기법을 사용하여 특정 상황별 메뉴 객체와 속성을 참조하십시오. uifigure
또는 figure
함수를 사용하여 만든 Figure를 상황별 메뉴의 부모로 지정할 수 있습니다.
fig = uifigure; cm = uicontextmenu(fig); m = uimenu(cm,'Text','Go To File'); fig.ContextMenu = cm;
콜백
ContextMenuOpeningFcn
— 콜백 함수를 여는 상황별 메뉴
''
(디폴트 값) | 함수 핸들 | 셀형 배열 | 문자형 벡터
콜백 함수를 여는 상황별 메뉴로, 다음 값 중 하나로 지정됩니다.
함수 핸들.
첫 번째 요소가 함수 핸들인 셀형 배열. 이 셀형 배열의 그 다음 요소들은 콜백 함수로 전달할 인수입니다.
유효한 MATLAB® 표현식이 포함된 문자형 벡터(권장되지 않음). MATLAB은 이 표현식을 기본 작업 공간에서 실행합니다.
콜백 속성값을 함수 핸들, 셀형 배열 또는 문자형 벡터로 지정하는 방법에 대한 자세한 내용은 콜백 함수 지정하기 항목을 참조하십시오.
이 콜백 함수는 사용자 상호 작용에 대한 응답으로 상황별 메뉴가 열릴 때 실행됩니다. 이 콜백 함수를 사용하면 사용자가 마우스 오른쪽 버튼으로 클릭하는 항목에 따라 상황별 메뉴 표시를 사용자 지정할 수 있습니다.
이 콜백 함수는 사용자와 앱의 상호 작용에 대한 특정 정보에 액세스할 수 있습니다. MATLAB은 이 정보를 콜백 함수에 대한 두 번째 인수로서 ContextMenuOpeningData
객체에 전달합니다. 앱 디자이너에서 이 인수는 event
로 명명됩니다. 점 표기법을 사용하여 객체 속성을 쿼리할 수 있습니다. 예를 들어, event.ContextObject
는 사용자가 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 컴포넌트에 대한 정보를 반환합니다.
참고
모든 상황별 메뉴에 대해 ContextMenuOpeningFcn
콜백을 지정할 수 있지만, 콜백 이벤트 데이터의 ContextMenuOpeningData
객체는 상황별 메뉴가 다음 두 가지 조건을 모두 충족하는 경우에만 사용할 수 있습니다.
상황별 메뉴가
uifigure
기반 앱(예: 앱 디자이너에서 만든 앱)과 연결되어 있음.상황별 메뉴가 UI 컴포넌트(
Axes
,Line
객체 같은 그래픽스 객체가 아님)와 연결되어 있거나, UI 컴포넌트만 포함하는 컨테이너와 연결되어 있음.
다음 표에는 ContextMenuOpeningData
객체 속성이 나열되어 있습니다.
속성 | 값 |
---|---|
ContextObject | 앱 사용자가 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 객체 |
InteractionInformation | 앱 사용자가 상황별 메뉴를 열기 위해 컴포넌트에서 마우스 오른쪽 버튼으로 클릭한 위치에 대한 정보. 이 정보는 예를 들어, |
Source | 콜백을 실행하는 상황별 메뉴 객체 |
EventName | 'ContextMenuOpening' |
다음 표에는 InteractionInformation
객체 속성이 나열되어 있습니다. 속성은 앱 사용자가 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 객체에 따라 달라집니다.
ContextObject | InteractionInformation 속성 | 값 |
---|---|---|
모두 | Location |
|
ScreenLocation | 주 디스플레이의 왼쪽 하단 코너를 기준으로 사용자가 마우스 오른쪽 버튼을 클릭한 위치로,
| |
Table | DisplayRow | 테이블에 표시되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 행으로, 숫자형 스칼라로 반환됩니다. 사용자가 테이블을 정렬하지 않은 경우 |
DisplayColumn | 테이블에 표시되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 열로, 숫자형 스칼라로 반환됩니다. 사용자가 테이블을 재정렬하지 않은 경우 | |
Row | 행이 원래 테이블 데이터와 대응되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 행으로, 숫자형 스칼라로 반환됩니다. 사용자가 테이블을 정렬하지 않은 경우 | |
Column | 열이 원래 테이블 데이터와 대응되는 상태에서 사용자가 마우스 오른쪽 버튼으로 클릭한 열로, 숫자형 스칼라로 반환됩니다. 사용자가 테이블을 재정렬하지 않은 경우 | |
RowHeader | 사용자가 테이블 행 헤더를 마우스 오른쪽 버튼으로 클릭했는지 여부로, 논리값 0 (false ) 또는 1 (true )로 반환됩니다. | |
ColumnHeader | 사용자가 테이블 열 헤더를 마우스 오른쪽 버튼으로 클릭했는지 여부로, 논리값 0 (false ) 또는 1 (true )로 반환됩니다. | |
Tree | Node | 마우스 오른쪽 버튼으로 클릭한 노드로, 사용자가 트리에서 어떤 노드와도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 |
Level | 마우스 오른쪽 버튼으로 클릭한 노드의 수준으로, 숫자형 스칼라로 반환됩니다. 사용자가 트리에서 어떤 노드와도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 | |
ListBox | Item | 마우스 오른쪽 버튼으로 클릭한 목록 상자 항목의 인덱스로, 숫자형 스칼라로 반환됩니다. 사용자가 목록 상자에서 어떤 항목과도 연결되어 있지 않은 영역을 마우스 오른쪽 버튼으로 클릭했다면 |
CreateFcn
— 생성 함수
''
(디폴트 값) | 함수 핸들 | 셀형 배열 | 문자형 벡터
객체 생성 함수로, 다음 값 중 하나로 지정됩니다.
함수 핸들.
첫 번째 요소가 함수 핸들인 셀형 배열. 이 셀형 배열의 그 다음 요소들은 콜백 함수로 전달할 인수입니다.
유효한 MATLAB 표현식이 포함된 문자형 벡터(권장되지 않음). MATLAB은 이 표현식을 기본 작업 공간에서 실행합니다.
콜백을 함수 핸들, 셀형 배열 또는 문자형 벡터로 지정하는 방법에 대한 자세한 내용은 앱 디자이너에서 콜백 사용하기 항목을 참조하십시오.
이 속성은 MATLAB이 객체를 생성할 때 실행할 콜백 함수를 지정합니다. MATLAB은 CreateFcn
콜백을 실행하기 전에 모든 속성값을 초기화합니다. CreateFcn
속성을 지정하지 않으면 MATLAB은 디폴트 생성 함수를 실행합니다.
기존 컴포넌트에 대해서는 CreateFcn
속성을 설정해도 아무 효과가 없습니다.
이 속성을 함수 핸들 또는 셀형 배열로 지정하면 생성 중인 객체에 콜백 함수의 첫 번째 인수를 사용하여 액세스할 수 있습니다. 이 속성을 함수 핸들 또는 셀형 배열로 지정하지 않은 경우에는 gcbo
함수를 사용하여 객체에 액세스하십시오.
DeleteFcn
— 삭제 함수
''
(디폴트 값) | 함수 핸들 | 셀형 배열 | 문자형 벡터
객체 삭제 함수로, 다음 값 중 하나로 지정됩니다.
함수 핸들.
첫 번째 요소가 함수 핸들인 셀형 배열. 이 셀형 배열의 그 다음 요소들은 콜백 함수로 전달할 인수입니다.
유효한 MATLAB 표현식이 포함된 문자형 벡터(권장되지 않음). MATLAB은 이 표현식을 기본 작업 공간에서 실행합니다.
콜백을 함수 핸들, 셀형 배열 또는 문자형 벡터로 지정하는 방법에 대한 자세한 내용은 앱 디자이너에서 콜백 사용하기 항목을 참조하십시오.
이 속성은 MATLAB에서 객체를 삭제할 때 실행할 콜백 함수를 지정합니다. MATLAB은 객체의 속성을 파괴하기 전에 DeleteFcn
콜백을 실행합니다. DeleteFcn
속성을 지정하지 않으면 MATLAB은 디폴트 삭제 함수를 실행합니다.
이 속성을 함수 핸들 또는 셀형 배열로 지정하면 삭제 중인 객체에 콜백 함수의 첫 번째 인수를 사용하여 액세스할 수 있습니다. 이 속성을 함수 핸들 또는 셀형 배열로 지정하지 않은 경우에는 gcbo
함수를 사용하여 객체에 액세스하십시오.
콜백 실행 컨트롤
Interruptible
— 콜백 중단
'on'
(디폴트 값) | on/off 논리값
콜백 중단으로, 'on'
또는 'off'
나 숫자형 값 또는 논리값 1
(true
) 또는 0
(false
)으로 지정됩니다. 값 'on'
은 true
와 동일하고 값 'off'
는 false
와 동일합니다. 따라서 이 속성의 값을 논리값으로 사용할 수 있습니다. 값은 matlab.lang.OnOffSwitchState
유형의 on/off 논리값으로 저장됩니다.
이 속성은 실행중 콜백을 중단할 수 있는지 여부를 지정합니다. 고려할 콜백 상태에는 다음 두 가지가 있습니다.
실행중 콜백은 현재 실행되고 있는 콜백입니다.
인터럽트 콜백은 실행중 콜백을 중단하고 자신이 실행되려는 콜백입니다.
MATLAB은 콜백 대기열을 처리하는 명령을 실행할 때마다 콜백 중단 동작을 결정합니다. 이러한 명령에는 drawnow
, figure
, uifigure
, getframe
, waitfor
, pause
가 포함됩니다.
실행중 콜백에 이러한 명령이 포함되어 있지 않으면 중단이 발생하지 않습니다. MATLAB은 먼저 실행중 콜백의 실행을 완료한 다음 인터럽트 콜백을 실행합니다.
실행중 콜백에 이러한 명령이 포함되어 있으면 실행중 콜백을 소유한 객체의 Interruptible
속성에서 중단을 발생시킬지 여부를 결정합니다.
Interruptible
값이'off'
이면 중단이 발생하지 않습니다. 대신 인터럽트 콜백을 소유한 객체의BusyAction
속성이 인터럽트 콜백을 삭제할지 아니면 콜백 대기열에 추가할지 결정합니다.Interruptible
값이'on'
이면 중단이 발생합니다. MATLAB이 다음번 콜백 대기열을 처리할 때 실행중 콜백의 실행을 중지하고 인터럽트 콜백을 실행합니다. 인터럽트 콜백이 완료된 후에는 MATLAB이 실행 중인 콜백의 실행을 재개합니다.
참고
콜백 중단과 실행은 다음 상황에서 다르게 동작합니다.
인터럽트 콜백이
DeleteFcn
,CloseRequestFcn
,SizeChangedFcn
콜백 중 하나이면Interruptible
속성값에 관계없이 중단이 발생합니다.실행중 콜백이 현재
waitfor
함수를 실행 중이면Interruptible
속성값에 관계없이 중단이 발생합니다.인터럽트 콜백을
Timer
객체가 소유한 경우 콜백은Interruptible
속성값에 관계없이 예약된 대로 실행됩니다.
BusyAction
— 콜백 대기
'queue'
(디폴트 값) | 'cancel'
콜백 대기로, 'queue'
나 'cancel'
로 지정됩니다. BusyAction
속성은 MATLAB이 인터럽트 콜백의 실행을 처리하는 방법을 지정합니다. 고려할 콜백 상태에는 다음 두 가지가 있습니다.
실행중 콜백은 현재 실행되고 있는 콜백입니다.
인터럽트 콜백은 실행중 콜백을 중단하고 자신이 실행되려는 콜백입니다.
BusyAction
속성은 다음 조건이 모두 충족될 때만 콜백 대기 동작을 결정합니다.
이러한 조건에서는 인터럽트 콜백을 소유하는 객체의 BusyAction
속성값이 MATLAB에서 인터럽트 콜백을 처리하는 방식을 결정합니다. BusyAction
속성의 가능한 값은 다음과 같습니다.
'queue'
— 실행중 콜백이 실행을 마치고 나면 인터럽트 콜백이 처리되도록 대기열에 넣습니다.'cancel'
— 인터럽트 콜백을 실행하지 않습니다.
BeingDeleted
— 삭제 상태
on/off 논리값
읽기 전용 속성입니다.
삭제 상태로, matlab.lang.OnOffSwitchState
유형의 on/off 논리값으로 반환됩니다.
MATLAB은 DeleteFcn
콜백이 실행을 시작할 때 BeingDeleted
속성을 'on'
으로 설정합니다. BeingDeleted
속성은 컴포넌트 객체가 더 이상 존재하지 않을 때까지 'on'
으로 설정되어 유지됩니다.
객체를 쿼리하거나 수정하기 전에 BeingDeleted
속성의 값을 확인하여 이 객체가 곧 삭제될 것이 아님을 확인합니다.
부모/자식
Children
— 상황별 메뉴 자식
빈 GraphicsPlaceholder
배열 (디폴트 값) | Menu
객체의 벡터
상황별 메뉴의 자식으로, 빈 GraphicsPlaceholder
나 Menu
객체로 구성된 벡터로 반환됩니다.
Children
속성을 사용해서는 자식을 추가하거나 제거할 수 없습니다. 자식의 목록을 보거나 자식 메뉴 항목을 재정렬하려면 이 속성을 사용하십시오. 이 배열에서 자식의 순서는 열려 있는 상황별 메뉴에 표시된 메뉴 항목의 순서를 반대로 반영합니다.
예를 들어, 다음 코드는 세 개의 상황별 메뉴를 만듭니다. 실행 중인 앱에서 상황별 메뉴를 열 때 Menu1
이 첫 번째 메뉴 옵션으로 표시됩니다.
fig = uifigure; cm = uicontextmenu(fig); m1 = uimenu(cm,'Text','Menu1'); m2 = uimenu(cm,'Text','Menu2'); m3 = uimenu(cm,'Text','Menu3'); fig.ContextMenu = cm;
cm.Children
은 예약된 순서로 메뉴 항목의 목록을 반환합니다.
cm.Children
ans = 3×1 Menu array: Menu (Menu3) Menu (Menu2) Menu (Menu1)
HandleVisibility
속성이 'off'
로 설정된 객체는 Children
속성에 나열되지 않습니다.
자식을 이 목록에 추가하려면 또 다른 Menu
객체의 Parent
속성을 이 ContextMenu
객체로 설정하십시오.
HandleVisibility
— 객체 핸들의 가시성
'on'
(디폴트 값) | 'callback'
| 'off'
객체 핸들의 가시성으로, 'on'
, 'callback'
, 'off'
중 하나로 지정됩니다.
이 속성은 그 부모의 자식 목록에서 객체의 가시성을 제어합니다. 객체가 그 부모의 자식 목록에 표시되지 않는다면 객체 계층 구조를 검색하거나 핸들 속성을 쿼리하여 객체를 가져오는 함수는 객체를 반환하지 않습니다. 이러한 함수로는 get
, findobj
, gca
, gcf
, gco
, newplot
, cla
, clf
, close
가 있습니다. HandleVisibility
속성은 부모 Figure의 CurrentObject
속성의 객체 핸들의 가시성도 제어합니다. 객체는 표시되지 않아도 여전히 유효합니다. 객체에 액세스할 수 있으면 해당 속성을 설정하여 가져온 후 객체에 대해 작동하는 함수로 전달할 수 있습니다.
HandleVisibility 값 | 설명 |
---|---|
'on' | 객체 핸들이 항상 표시됩니다. |
'callback' | 명령줄에서 호출한 함수 내에서가 아니라, 콜백 내에서나 콜백이 호출한 함수 내에서 객체 핸들이 표시됩니다. 이 옵션은 명령줄에서 객체에 액세스하는 것은 차단하지만, 콜백 함수가 이 객체에 액세스하는 것은 허용합니다. |
'off' | 객체 핸들이 항상 표시되지 않습니다. 이 옵션은 다른 함수에 의해 UI가 의도치 않게 변경되는 것을 방지하는 데 유용합니다. HandleVisibility 를 'off' 로 설정하여 해당 함수를 실행하는 동안 핸들을 일시적으로 숨길 수 있습니다. |
식별자
Type
— 그래픽스 객체의 유형
'uicontextmenu'
읽기 전용 속성입니다.
그래픽스 객체의 유형으로, 'uicontextmenu'
로 반환됩니다.
Tag
— 객체 식별자
''
(디폴트 값) | 문자형 벡터 | string형 스칼라
객체 식별자로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 객체의 식별자로 사용할 고유 Tag
값을 지정할 수 있습니다. 코드의 다른 곳에서 객체에 액세스해야 할 경우 findobj
함수를 사용하여 Tag
값을 기반으로 객체를 검색할 수 있습니다.
UserData
— 사용자 데이터
[]
(디폴트 값) | 배열
사용자 데이터로, 임의의 배열로 지정됩니다. UserData
를 지정하면 앱 내에서 데이터를 공유하는 데 유용할 수 있습니다. 자세한 내용은 콜백 간 데이터 공유하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2023b: 상황별 메뉴 열기에 사용된 동작 정보에 액세스할 수 있음
ContextMenuOpeningFcn
콜백은 UI 컴포넌트의 상황별 메뉴와 연결되어 있으면 추가적인 이벤트 데이터를 가지게 됩니다. 이 데이터를 사용하여 앱에서 상황별 메뉴를 사용자 지정하고 공유하십시오.
이벤트 데이터 속성 | 설명 |
---|---|
ContextObject | 앱 사용자가 상황별 메뉴를 열기 위해 마우스 오른쪽 버튼으로 클릭한 객체 |
InteractionInformation | 앱 사용자가 상황별 메뉴를 열기 위해 컴포넌트에서 마우스 오른쪽 버튼으로 클릭한 위치(예: 테이블의 셀)에 대한 정보. |
R2020a: Callback
속성은 권장되지 않음
R2020a부터는 ContextMenu
객체의 Callback
속성을 사용하는 것은 권장되지 않습니다. ContextMenu
객체의 ContextMenuOpeningFcn
속성을 사용합니다. 속성값은 동일합니다.
현재로서는 ContextMenu
객체의 Callback
속성에 대한 지원을 제거할 계획이 없습니다. 그러나 ContextMenu
객체에 대해 get
함수를 호출하면 반환되는 목록에 더 이상 이 속성이 나타나지 않습니다.
R2020a: Visible
속성과 Position
속성은 권장되지 않음
R2020a부터 상황별 메뉴가 특정 위치에서 열리도록 구성하기 위해 Visible
속성과 Position
속성을 사용하는 것은 권장되지 않습니다. uifigure
함수로 만든 앱에서는 open
함수를 대신 사용하십시오.
현재로서는 ContextMenu
객체의 Visible
속성과 Position
속성에 대한 지원을 제거할 계획이 없습니다. 그러나 ContextMenu
객체에 대해 get
함수를 호출하면 반환되는 목록에 더 이상 이러한 속성이 나타나지 않습니다.
참고 항목
uimenu
| uicontextmenu
| open
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)