主要内容

自定义属性的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)字符=“按钮”;结束

定义颜色,FontColor,文本公共属性为你RoundButton类。用户可以设置这些属性在创建RoundButton实例。

定义属性的更多信息,请参阅通过编程方式管理属性的自定义UI组件

属性(=私人访问,瞬态NonCopyable) HTMLComponentmatlab.ui.control.HTML结束

定义HTMLComponent私有财产的HTML UI组件。

事件(HasCallbackProperty NotifyAccess =保护)%生成ButtonPushedFcn调属性ButtonPushed结束

定义一个ButtonPushed事件在一个事件块。指定HasCallbackProperty事件块自动生成ButtonPushedFcn类的公共财产。

方法(访问=保护)
创建一个方法块。
函数设置(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组件通过调用uihtml函数。为您的HTML组件设置以下属性:

  • 位置——HTML组件的位置相对于自定义UI组件的位置。

  • HTMLSource——源文件为HTML组件包含HTML标记。

  • 数据——一个结构体与一个点击字段和值。在HTML源文件代码集这一领域真正的当用户单击HTML组件。

  • DataChangedFcn一个匿名函数,调用一个类方法命名notifyClick。这个函数运行时数据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 >标签和<头>标签。

<时尚> html,身体{高度:100%;text-align:中心;{}按钮宽度:100%;高度:100%;border - radius: 2 em;字体大小:1 em;光标:指针;边界:没有;}按钮:专注{大纲:0;}> < /风格

使用CSS定义HTML内容的风格标记:

  • 设置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;});

添加一个事件监听器htmlComponentJavaScript对象。这个事件监听器监听任何变化数据财产的HTMLComponentMATLAB对象,然后更新HTML按钮的属性元素按照RoundButton属性值。

按钮= . getelementbyid (“roundButton”);按钮。addEventListener(“点击”,函数(事件){htmlComponent.Data。点击= true;htmlComponent。数据=htmlComponent。数据;});

一个事件侦听器添加到HTML按钮。这个事件监听器监听按钮元素被点击。当用户单击按钮时,该函数:

  • 更新点击数据字段的HTML组件真正的

  • 显式地设置数据HTML组件的属性。这个通知MATLAB HTML组件对象来执行DataChangedFcn回调。

}< /脚本> < /头>
关闭设置函数和<脚本><头>标签。
<身体> <按钮id =“roundButton " > < /按钮> < br / > < /身体>
创建一个按钮元素在体内的HTML文档。
< / html >
关闭< html >标签。

创建一个RoundButton实例

创建并保存后RoundButton.mRoundButton.html,创建的实例RoundButton在UI类图。

指定颜色,FontColor,ButtonPushedFcn回调属性名称参数。

无花果= uifigure (“位置”,(200 200 300 300));btn = RoundButton(图,“颜色”,“红色”,“FontColor”,“白色”,“ButtonPushedFcn”@ (o, e) disp (“点击”));

单击按钮。命令窗口显示点击

另请参阅

功能

相关的话题