以编程方式将UI组件添加到应用程序设计器
大多数UI组件都可以在应用程序设计器中使用组件库让你拖放到画布上。偶尔,您可能需要在代码视图中以编程方式添加组件。以下是一些常见的情况:
控件中不可用的组件组件库.例如,显示对话框的应用程序必须调用适当的函数来显示对话框。
根据运行时条件动态创建组件。
当以编程方式添加UI组件时,必须调用适当的函数来创建组件,将回调分配给组件,然后将回调作为helper函数编写。
创建组件并分配回调
调用从现有回调中创建组件的函数(有关UI组件函数的列表,请参见开发基于ui的应用).的StartupFcn
回调是创建组件的好地方,因为回调在应用启动时运行。在其他情况下,可以在不同的回调函数中创建组件。例如,如果您希望在用户按下按钮时显示对话框,请从按钮的回调函数中调用对话框函数。
在调用函数创建组件时,请将图形或其子容器之一指定为父对象。例如,这个命令创建一个按钮,并将图形指定为父对象。在这种情况下,图形具有App Designer分配的默认名称(app.UIFigure
).
b = uibutton(app.UIFigure);
接下来,将组件的回调属性指定为窗体的函数句柄@app。callbackname
.例如,该命令设置ButtonPushedFcn
按钮属性b
到一个名为mybuttonpress
.
b.ButtonPushedFcn = @app.mybuttonpress;
编写回调
将组件的回调函数编写为私有helper函数。函数必须有应用程序
,src
,事件
就像前三个论点一样。下面是一个回调的例子,它被编写为私有helper函数。
方法(Access = private)函数mybuttonpress(应用程序、src、事件)disp (“祝你今天过得愉快!”);结束结束
要编写接受额外输入参数的回调函数,请在前三个参数之后指定额外参数。例如,这个回调接受两个额外的输入,x
而且y
:
方法(Access = private)函数Addxy (app,src,事件,x,y) disp(x + y);结束结束
若要将此回调分配给组件,请将组件的回调属性指定为单元格数组。单元格数组中的第一个元素必须是函数句柄。后续元素必须是额外的输入值。例如:
b.ButtonPushedFcn = {@app.addxy,10,20};
示例:带有关闭功能的确认对话框
这个应用程序展示了如何显示一个确认对话框,当对话框关闭时执行回调。
当用户单击窗口的关闭按钮(X)时,会显示一个对话框,以确认用户想要关闭应用程序CloseFcn
回调执行。
示例:基于数据文件填充树节点的应用程序
这个应用程序展示了如何在运行时动态添加树节点。在应用程序运行之前,树中已经存在三个医院节点。但是在运行时,应用程序会在每个医院名称下添加几个子节点。类的内容决定子节点的数量和子节点上的标签patients.xls
电子表格。
当用户单击树中的患者名称时,将患者信息面板显示年龄、性别和健康状况等数据。应用程序将对数据的更改存储在一个表数组中。