GUIDE 中的交互式列表框 App
注意
在以后的版本中将会删除 GUIDE 环境。在删除 GUIDE 后,使用 GUIDE 创建的现有 App 可以继续在 MATLAB® 中运行,但不能在 GUIDE 中对其进行编辑。
要继续编辑使用 GUIDE 创建的现有 App,请参阅 GUIDE 迁移策略,了解有关如何帮助保持该 App 与未来 MATLAB 版本的兼容性的信息。要以交互方式创建新 App,请改用使用 App 设计工具开发 App。
此示例说明如何查看和运行一个预置的使用 GUIDE 创建的 App。App 包含的列表框中显示了特定文件夹中的文件。双击列表中的项时,MATLAB 将会打开该列表项。
打开并运行示例
在 GUIDE 中打开 App,然后点击运行图窗(绿色的播放按钮)以运行它。
也可以在命令行窗口中使用 'dir'
名称-值对组参量调用 lbox2
函数。利用名称-值对组参量,可以列出任何文件夹的内容。例如,以下命令将会列出 Windows® 系统 C:\ 文件夹中的文件:
lbox2('dir','C:\')
注意:必须在 MATLAB® 路径上的某个文件夹中保存 GUIDE 文件,然后才能在命令行窗口中调用 lbox2
。要保存这些文件,请在 GUIDE 中选择文件 > 另存为。
查看布局和回调代码
在 GUIDE 中,点击编辑器按钮 以查看代码。
在编辑器窗口靠近顶部的位置,使用 转至 按钮导航到下面讨论的函数。
lbox2_OpeningFcn
回调函数 lbox2_OpeningFcn
在 UI 中第一次显示列表框之前执行。以下语句确定用户是否为 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
输入参量包含两个附加项(表明用户指定了路径)。因此,后续的 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