自定义属性的HTML UI组件
延长您的自定义UI组件使用第三方可视化或小部件,创建一个自定义组件,其中包含一个HTML UI组件。使用底层的HTML UI组件来定制组件外观和界面与第三方库,并使用自定义组件定义组件属性和功能,用户可以设置回调。
自定义组件的概述
创建一个定制的UI组件,该组件使用一个HTML UI组件,有两个文件,您必须创建。
定制UI组件文件,在这个文件中,您可以定义您的自定义组件。你指定它的属性,它的属性值,它监听的事件,它执行的回调函数。
HTML源文件,在这个文件中,您将配置和更新UI组件的视觉外观,监听用户交互,并通过信息交互发生的UI组件类。
代码必须改变属性值和用户交互沟通这两个文件。
使反应属性更新
因为自定义UI组件文件定义了属性,用户可以设置,但是HTML源文件控制组件的视觉风格,这两个文件需要交流属性更新。
在UI组件文件中,UI组件的配置属性。指定属性,用户可以设置通过定义公共属性属性
块。在更新
您的类的方法,将公共属性的值存储为字段中结构体
在数据
HTML UI组件的属性。这给HTML源文件访问这些属性值。
在HTML源文件,使用属性值更新HTML UI组件的外观。为此,在设置
内部函数<脚本>
标签,访问字段的值数据
并利用它们修改HTML元素的样式属性。
使响应用户交互
用户在MATLAB组件定义回调函数®,但是这些通常回调侦听响应操作上执行一个HTML元素中定义的HTML源文件。这两个文件还需要对用户交互沟通。
在UI组件的类文件中,首先创建回调你的UI组件的属性。创建一个事件
块的HasCallbackProperty
。当你定义一个事件在这个块,MATLAB创建一个公共调产权相关的UI组件。例如,如果您创建一个事件命名ButtonPushed
,这将自动为你创建一个公共财产类命名ButtonPushedFcn
。
执行一个用户定义的回调函数与用户交互时,您的代码必须首先识别用户交互时发生。在UI组件的类文件中,给HTML UI组件的方法。在设置
方法,设置数据
HTML UI组件的属性结构体
一个字段来存储信息是否发生的交互。因为类文件和HTML源文件分享这个属性,它的值可以更新的HTML源文件的价值沟通用户交互状态到UI组件类。为此,在HTML源文件设置
内部函数<脚本>
标签,创建一个事件监听器,监听用户交互。当侦听器检测到的交互,更新数据
HTML UI组件的属性。
在UI组件类文件接收用户交互发生的信息,它必须触发事件相关的交互。创建一个类的方法来做到这一点。在类的方法中,首先调用内置的通知
定义触发事件的方法。这与事件相关联的执行用户定义的回调函数。然后,设置数据
属性的HTML组件等待另一个互动。在设置
UI组件类文件的方法,设置DataChangedFcn
属性的HTML组件定义的类方法。HTML UI组件时自动执行这个方法数据
属性变更。因此,在HTML源文件更新数据
财产发生的交互沟通,这个方法执行适当的回调。
RoundButton
类的实现
这个示例演示了一个典型的结构编写一个定制的UI组件,该组件使用一个HTML UI组件。这个例子展示了如何创建一个自定义的按钮组件的一个子类ComponentContainer
基类。为一个自定义的按钮组件的一个例子中创建应用程序设计师,看看创建自定义按钮悬停效果使用HTML。
类创建一个按钮和一个自定义的风格。它允许用户指定按钮的颜色,点击文本,文本颜色和响应。
定义UI组件类,在MATLAB上创建两个文件在同一文件夹路径:
RoundButton.m
——类定义UI组件RoundButton.html
——HTML源文件
RoundButton.m
类定义
RoundButton 类 |
讨论 |
---|---|
classdefRoundButton < matlab.ui.componentcontainer.ComponentContainer
|
创建一个定制的UI组件命名RoundButton 通过定义一个子类matlab.ui.componentcontainer.ComponentContainer 类。 |
属性颜色{mustBeMember(颜色、…{“白色”,“蓝”、“红”,“绿色”、“黄色”})}=“白色”FontColor{mustBeMember (FontColor…{“黑色”,“白色”})}=“黑”文本(:1)字符=“按钮”;结束 |
定义 定义属性的更多信息,请参阅通过编程方式管理属性的自定义UI组件。 |
属性(=私人访问,瞬态NonCopyable) HTMLComponentmatlab.ui.control.HTML结束 |
定义 |
事件(HasCallbackProperty NotifyAccess =保护)%生成ButtonPushedFcn调属性ButtonPushed结束 |
定义一个 |
方法(访问=保护)
|
创建一个方法 块。 |
函数设置(comp)%设置该组件的初始位置comp.Position = (100 100 80 40);%创建HTML组件comp.HTMLComponent = uihtml (comp);comp.HTMLComponent。位置=[1 1 comp.Position(3:4)]; comp.HTMLComponent.HTMLSource = fullfile(pwd,“RoundButton.html”);comp.HTMLComponent。=数据结构(“点击”、假);comp.HTMLComponent。DataChangedFcn=@(s,e)notifyClick(comp);结束 |
定义 然后,创建一个HTML组件通过调用
|
函数更新(薪酬)%更新HTML组件的数据comp.HTMLComponent.Data。颜色= comp.Color;comp.HTMLComponent.Data。FontColor=comp.FontColor; comp.HTMLComponent.Data.Text = comp.Text; comp.HTMLComponent.Position = [1 1 comp.Position(3:4)];结束 |
定义更新 您的类的方法。在方法中,存储的值颜色 ,FontColor ,文本 属性字段数据 HTML组件的属性。这使您能够更新HTML按钮元素的属性,并让HTML组件监听这些属性改变时。 |
函数notifyClick (comp)如果comp.HTMLComponent.Data。点击comp.HTMLComponent.Data。点击= false;drawnow通知(排版,“ButtonPushed”);结束结束 |
定义的函数运行时数据 被称为属性更改notifyClick 。函数首先检查看看点击 数据字段的HTML组件真正的 。如果是这样的话,函数集点击 数据字段假 等待下一个按钮点击。函数也火了ButtonPushed 事件,进而执行用户定义的ButtonPushedFcn 财产。 |
结束结束 |
关闭 |
RoundButton.html
源的定义
HTML源代码 | 讨论 |
---|---|
< !html DOCTYPE html > < > < >头 |
打开 |
<时尚> html,身体{高度:100%;text-align:中心;{}按钮宽度:100%;高度:100%;border - radius: 2 em;字体大小:1 em;光标:指针;边界:没有;}按钮:专注{大纲:0;}> < /风格 |
使用CSS定义HTML内容的风格标记:
|
< script type = " text / javascript " >函数设置(htmlComponent) { |
写一个设置 内部函数<脚本> 标签连接您的JavaScript®对象,称为htmlComponent ,在MATLAB中创建的HTML UI组件。 |
htmlComponent。addEventListener (“DataChanged函数(事件){buttonElement = . getelementbyid (“roundButton”);buttonElement.style。写成backgroundColor = htmlComponent.Data.Color;buttonElement。innerHTML = htmlComponent.Data.Text;buttonElement.style。颜色= htmlComponent.Data.FontColor;}); |
添加一个事件监听器 |
按钮= . getelementbyid (“roundButton”);按钮。addEventListener(“点击”,函数(事件){htmlComponent.Data。点击= true;htmlComponent。数据=htmlComponent。数据;}); |
一个事件侦听器添加到HTML按钮。这个事件监听器监听按钮元素被点击。当用户单击按钮时,该函数:
|
}< /脚本> < /头> |
关闭设置 函数和<脚本> 和<头> 标签。 |
<身体> <按钮id =“roundButton " > < /按钮> < br / > < /身体> |
创建一个按钮元素在体内的HTML文档。 |
< / html > |
关闭< html > 标签。 |
创建一个RoundButton实例
创建并保存后RoundButton.m
和RoundButton.html
,创建的实例RoundButton
在UI类图。
指定颜色
,FontColor
,ButtonPushedFcn
回调属性名称参数。
无花果= uifigure (“位置”,(200 200 300 300));btn = RoundButton(图,…“颜色”,“红色”,…“FontColor”,“白色”,…“ButtonPushedFcn”@ (o, e) disp (“点击”));
单击按钮。命令窗口显示点击
。