GUIDE의 대화형 방식 목록 상자 앱
참고
GUIDE 환경은 향후 릴리스에서 제거될 예정입니다. GUIDE가 제거된 후에도 기존 GUIDE 앱은 MATLAB®에서 계속 실행할 수 있지만 GUIDE에서 편집할 수는 없게 됩니다.
기존의 GUIDE 앱을 계속 편집하려면 GUIDE 마이그레이션 전략 항목에서 향후 MATLAB 릴리스와의 앱 호환성을 유지하는 방법에 대한 내용을 참고하십시오. 대화형 방식으로 새 앱을 만들려면 앱 디자이너를 사용하여 앱 개발하기 항목을 대신 참조하십시오.
이 예제에서는 사전 작성된 GUIDE 앱을 검토하고 실행하는 방법을 보여줍니다. 앱에는 특정 폴더의 파일이 표시되는 목록 상자가 포함되어 있습니다. 목록에서 항목을 더블 클릭하면 MATLAB이 이 항목을 엽니다.
예제 열기 및 실행하기
GUIDE에서 앱을 열고 Figure 실행(녹색 재생 버튼)을 클릭하여 실행합니다.
또는 명령 창에서 'dir'
이름-값 쌍 인수를 사용하여 lbox2
함수를 호출해도 됩니다. 이름-값 쌍 인수를 사용하면 어떤 폴더의 내용도 나열할 수 있습니다. 예를 들어, 다음 명령은 Windows® 시스템의 C:\ 폴더에 있는 파일을 나열합니다.
lbox2('dir','C:\')
참고: 명령 창에서 lbox2
를 호출하려면 먼저 MATLAB® 경로에 있는 폴더에 GUIDE 파일을 저장해야 합니다. 파일을 저장하려면 GUIDE에서 파일 > 다른 이름으로 저장을 선택하십시오.
레이아웃과 콜백 코드 살펴보기
GUIDE에서 편집기 버튼 을 클릭하여 코드를 확인합니다.
편집기 창 상단에 있는 이동 버튼을 사용하여 아래에서 설명하는 함수로 이동합니다.
lbox2_OpeningFcn
목록 상자가 처음으로 UI에 표시되기 직전에 콜백 함수 lbox2_OpeningFcn
이 실행됩니다. 다음 명령문은 사용자가 lbox2
에 대한 경로 인수를 지정했는지 여부를 확인합니다.
if nargin == 3, initial_dir = pwd; elseif nargin > 4 if strcmpi(varargin{1},'dir') if exist(varargin{2},'dir') initial_dir = varargin{2}; else errordlg('Input must be a valid directory','Input Argument Error!') return end else errordlg('Unrecognized input argument','Input Argument Error!'); return; end end
nargin==3
인 경우, lbox2_OpeningFcn
에 대한 입력 인수는 hObject
, eventdata
, handles
뿐입니다. 다시 말해, 사용자가 lbox2
를 호출할 때 경로를 지정하지 않았기 때문에 목록 상자에는 현재 폴더의 내용이 표시됩니다. nargin>4
인 경우에는 varargin
입력 인수에 2개의 추가 항목이 포함되어 있습니다(사용자가 경로를 지정했음을 알 수 있음). 이후의 if
문은 해당 경로가 유효한지 확인합니다.listbox1_callback
사용자가 목록 상자 항목을 클릭하면 콜백 함수 listbox1_callback
이 실행됩니다. 함수 시작 부분에 있는 다음 명령문은 사용자가 목록 상자의 항목을 더블 클릭할 때마다 true
를 반환합니다.
if strcmp(get(handles.figure1,'SelectionType'),'open')
true
이면 listbox1_callback
은 사용자가 어떤 항목을 목록 상자에서 선택했는지 확인합니다.index_selected = get(handles.listbox1,'Value'); file_list = get(handles.listbox1,'String'); filename = file_list{index_selected};
if handles.is_dir(handles.sorted_index(index_selected)) cd (filename) load_listbox(pwd,handles) else [path,name,ext] = fileparts(filename); switch ext case '.fig' guide (filename) otherwise try open(filename) catch ex errordlg(... ex.getReport('basic'),'File Type Error','modal') end end end