主要内容

以编程方式将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电子表格。

当用户单击树中的患者名称时,将患者信息面板显示年龄、性别和健康状况等数据。应用程序将对数据的更改存储在一个表数组中。

相关的话题