matlab.ui.componentcontainer.ComponentContainer类
包:matlab.ui.componentcontainer
用于开发自定义UI组件对象的基类
描述
matlab.ui.componentcontainer.ComponentContainer
是一个您构建在其上的自定义UI组件对象的类。类定义此基类的子类时,可以使用ComponentContainer
属性和方法来构建UI组件对象。类定义文件的第一行指定此语法,以直接继承ComponentContainer
类,MyComponent
是对象的名称:
MyComponent < matlab.ui.componentcontainer.ComponentContainer
的matlab.ui.componentcontainer.ComponentContainer
类是一个处理
类。
属性
写成BackgroundColor
- - - - - -背景颜色
(0.94 0.94 0.94)
(默认)|RGB值|十六进制颜色代码|“r”
|‘g’
|“b”
|……
背景色,指定为RGB三元组、十六进制颜色编码或表中列出的颜色选项之一。
RGB三联色和十六进制色码用于指定自定义颜色。
RGB三元组是一个三元素行向量,其元素指定颜色的红、绿、蓝成分的强度。强度必须在这个范围内
[0, 1]
;例如,(0.4 0.6 0.7)
.十六进制颜色码是字符向量或以散列符号(
#
)之后是三个或六个十六进制数字,取值范围从0
来F
.这些值不区分大小写。因此,颜色编码“# FF8800”
,“# ff8800”
,“# F80”
,“# f80”
是等价的。
或者,您也可以通过名称指定一些常用颜色。该表列出了已命名的颜色选项、等效的RGB三组和十六进制颜色编码。
颜色名称 | 短名称 | RGB值 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
“红色” |
“r” |
(1 0 0) |
“# FF0000” |
|
“绿色” |
“g” |
(0 1 0) |
“# 00 ff00” |
|
“蓝色” |
“b” |
(0 0 1) |
“# 0000 ff” |
|
“青色” |
“c” |
(0 1 1) |
“# 00飞行符” |
|
“红色” |
“m” |
(1 0 1) |
“#”就 |
|
“黄色” |
“y” |
(1 1 0) |
“# FFFF00” |
|
“黑色” |
“k” |
(0 0 0) |
“000000 #” |
|
“白色” |
“w” |
(1 1 1) |
“# FFFFFF” |
|
这里是RGB三组和十六进制颜色编码的默认颜色MATLAB®在许多类型的情节中使用。
RGB值 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 - 0.7410) |
“# 0072 bd” |
|
(0.8500 0.3250 0.0980) |
“# D95319” |
|
(0.9290 0.6940 0.1250) |
“# EDB120” |
|
(0.4940 0.1840 0.5560) |
“# 7 e2f8e” |
|
(0.4660 0.6740 0.1880) |
“# 77 ac30” |
|
(0.3010 0.7450 0.9330) |
“# 4 dbeee” |
|
(0.6350 0.0780 0.1840) |
“# A2142F” |
|
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
可见
- - - - - -可见性状态
“上”
(默认)|开/关逻辑值
可见状态,指定为“上”
或“关闭”
,或作为数字或逻辑1
(真正的
)或0
(假
).的值“上”
相当于真正的
,“关闭”
相当于假
.因此,您可以将此属性的值用作逻辑值。该值存储为类型的开/关逻辑值matlab.lang.OnOffSwitchState
.
“上”
—显示对象。“关闭”
—隐藏对象,不删除对象。您仍然可以访问不可见UI组件的属性。
要使您的应用程序启动更快,请设置可见
财产“关闭”
用于启动时不需要出现的所有组件。
更改不可见容器的大小将触发SizeChangedFcn
回调,当它变得可见。
改变了可见
容器的属性不的值可见
子组件的属性。即使隐藏容器会导致隐藏子组件,情况也是如此。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
快捷菜单
- - - - - -上下文菜单
空GraphicsPlaceholder
数组(默认)|快捷菜单
对象
上下文菜单,指定为快捷菜单
对象创建的。uicontextmenu
函数。当右键单击组件中不包含任何底层UI组件或图形对象的区域时,使用此属性可显示上下文菜单。
若要在自定义UI组件的任何部分上单击右键时显示上下文菜单,请编写代码设置快捷菜单
属性的所有底层UI组件和图形对象快捷菜单
属性已设置。
示例:组件与上下文菜单
这段代码在网格布局管理器中创建了一个带有标签和按钮的简单自定义UI组件。类的实例时SimpleComponent
类中的代码将上下文菜单分配给组件更新
方法然后将该相同的上下文菜单分配给底层GridLayout
,按钮
,标签
对象。
classdefSimpleComponent < matlab.ui.componentcontainer.ComponentContainer属性(Access = private, Transient, NonCopyable) GridLayoutmatlab.ui.container.GridLayout按钮matlab.ui.control.Button标签matlab.ui.control.Label结束方法(访问=保护)函数设置(obj)%设置组件大小obj。位置= [100 100 220 50];%创建网格obj。GridLayout = uigridlayout(obj,[1 2]);%创建组件obj。标签= uilabel (obj。GridLayout,...“文本”,“我的组件”);obj。按钮= uibutton (obj.GridLayout);结束函数update(obj) obj. gridlayout . contextmenu = obj. contextmenu;obj.Label.ContextMenu = obj.ContextMenu;obj.Button.ContextMenu = obj.ContextMenu;结束结束结束
创建一个SimpleComponent
对象并指定上下文菜单。右键单击组件中的空白处和标签。出现上下文菜单。
无花果= uifigure;厘米= uicontextmenu(图);m1 = uimenu(厘米);SimpleComponent(图,“快捷菜单”厘米);
属性:
GetAccess |
公共
|
SetAccess |
公共
|
NonCopyable |
真正的
|
瞬态 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
位置
- - - - - -UI组件的大小和位置,不包括空白
[100 100 100 100]
(默认)|[左底宽高]
UI组件的大小和位置,不包括轴标签和勾标记等装饰的空白。将此属性指定为形式向量[左底宽高]
.
请注意
当UI组件的父组件是GridLayout
.
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
单位
- - - - - -度量单位
“像素”
(默认)
计量单位,指定为“像素”
.
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
布局
- - - - - -布局选项
空LayoutOptions
数组(默认)|GridLayoutOptions
对象
布局选项,指定为GridLayoutOptions
对象。此属性为网格布局容器的子组件指定选项。如果组件不是网格布局容器的子组件(例如,它是图形或面板的子组件),则此属性为空,没有任何效果。但是,如果组件是网格布局容器的子组件,则可以将组件放置在网格的所需行和列中行
而且列
属性GridLayoutOptions
对象。
例如,这段代码将图像组件放在其父网格的第三行和第二列中。
G = uigridlayout([4 3]);我=用户界面图像(g);即时通讯。ImageSource =“peppers.png”;即时通讯。ScaleMethod =“填满”;im.Layout.Row = 3;im.Layout.Column = 2;
若要使图像跨越多行或多列,请指定行
或列
属性作为双元素向量。例如,此图像跨越列2
通过3.
.
im.Layout.Column = [2 3];
属性:
GetAccess |
公共
|
SetAccess |
公共
|
SizeChangedFcn
- - - - - -大小改变回调
”
(默认)|函数处理|单元阵列|特征向量
大小变化回调函数,指定为以下值之一:
一个处理函数。
单元格数组,其中第一个元素是函数句柄。单元格数组中的后续元素是传递给回调函数的参数。
包含有效MATLAB表达式的字符向量(不推荐)。MATLAB在基本工作区中计算这个表达式。
的SizeChangedFcn
回调执行时间:
组件第一次变得可见。
当组件的大小发生变化时,它是可见的。
该组件在其大小改变后第一次变得可见。这种情况发生在组件不可见时大小发生变化,然后组件稍后变为可见时。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
AbortSet |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
NonCopyable |
真正的
|
CreateFcn
- - - - - -创建函数
”
(默认)|函数处理|单元阵列|特征向量
对象创建函数,指定为以下值之一:
函数处理。
单元格数组,其中第一个元素是函数句柄。单元格数组中的后续元素是传递给回调函数的参数。
字符向量包含有效的MATLAB表达式(不推荐)。MATLAB在基本工作区中计算这个表达式。
有关将回调指定为函数句柄、单元格数组或字符向量的详细信息,请参见应用程序设计器中的回调.
此属性指定MATLAB创建对象时要执行的回调函数。函数执行之前,MATLAB初始化所有属性值CreateFcn
回调。如果不指定CreateFcn
属性,然后MATLAB执行一个默认的创建函数。
设置CreateFcn
属性对现有组件没有影响。
如果将此属性指定为函数句柄或单元格数组,则可以使用回调函数的第一个参数访问正在创建的对象。否则,使用gcbo
函数来访问对象。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
AbortSet |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
NonCopyable |
真正的
|
DeleteFcn
- - - - - -删除函数
”
(默认)|函数处理|单元阵列|特征向量
对象删除函数,指定为以下值之一:
函数处理。
单元格数组,其中第一个元素是函数句柄。单元格数组中的后续元素是传递给回调函数的参数。
字符向量包含有效的MATLAB表达式(不推荐)。MATLAB在基本工作区中计算这个表达式。
有关将回调指定为函数句柄、单元格数组或字符向量的详细信息,请参见应用程序设计器中的回调.
此属性指定在MATLAB删除对象时执行的回调函数。MATLAB执行DeleteFcn
在销毁对象的属性之前调用。如果不指定DeleteFcn
属性,然后MATLAB执行一个默认删除函数。
如果将此属性指定为函数句柄或单元格数组,则可以使用回调函数的第一个参数访问正在删除的对象。否则,使用gcbo
函数来访问对象。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
AbortSet |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
NonCopyable |
真正的
|
可中断
- - - - - -回调中断
“上”
(默认)|开/关逻辑值
回调中断,指定为“上”
或“关闭”
,或作为数字或逻辑1
(真正的
)或0
(假
).的值“上”
相当于真正的
,“关闭”
相当于假
.因此,您可以将此属性的值用作逻辑值。该值存储为类型的开/关逻辑值matlab.lang.OnOffSwitchState
.
此属性确定正在运行的回调是否可以中断。有两种回调状态需要考虑:
的运行回调是当前正在执行的回调。
的打断回调是一个试图中断正在运行的回调的回调。
每当MATLAB调用回调时,该回调将试图中断正在运行的回调(如果存在的话)。的可中断
属性的属性确定是否允许中断。
请注意
回调中断和执行在以下情况下表现不同:
如果中断回调函数是
DeleteFcn
,CloseRequestFcn
或SizeChangedFcn
回调函数,则中断发生而不管可中断
属性值。如果正在运行的回调函数当前正在执行
等待
函数,则中断发生而不管可中断
属性值。计时器
对象根据调度执行,而不考虑可中断
属性值。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
GetObservable |
真正的
|
SetObservable |
真正的
|
BusyAction
- - - - - -回调排队
“队列”
(默认)|“取消”
回调队列,指定为“队列”
或“取消”
.的BusyAction
属性决定了MATLAB如何处理中断回调的执行。有两种回调状态需要考虑:
的运行回调是当前正在执行的回调。
的打断回调是一个试图中断正在运行的回调的回调。
每当MATLAB调用回调时,该回调将试图中断正在运行的回调。的可中断
属性的属性确定是否允许中断。如果不允许中断,则BusyAction
属性的属性确定是丢弃该中断回调还是将其放入队列中。这些是可能的值BusyAction
属性:
“队列”
—在正在运行的回调完成执行后,将中断回调放入队列中进行处理。“取消”
—不执行中断回调。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
GetObservable |
真正的
|
SetObservable |
真正的
|
BeingDeleted
- - - - - -删除状态
开/关逻辑值
删除状态,作为类型的开/关逻辑值返回matlab.lang.OnOffSwitchState
.
MATLAB设置BeingDeleted
财产“上”
当DeleteFcn
回调函数开始执行。的BeingDeleted
物业仍设为“上”
直到组件对象不再存在。
的值BeingDeleted
属性以在查询或修改对象之前验证该对象是否即将被删除。
属性:
GetAccess |
公共
|
SetAccess |
受保护的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
父
- - - - - -父容器
数字
对象(默认)|面板
对象|选项卡
对象|GridLayout
对象
组件的父容器,指定为数字
,面板
,选项卡
,或GridLayout
对象。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
瞬态 |
真正的
|
依赖 |
真正的
|
NonCopyable |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
孩子们
- - - - - -UI组件的孩子
空GraphicsPlaceholder
数组
UI组件的子组件,返回为空GraphicsPlaceholder
数组中。自定义UI组件没有子组件。设置此属性没有效果。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
瞬态 |
真正的
|
依赖 |
真正的
|
NonCopyable |
真正的
|
HandleVisibility
- - - - - -对象句柄的可见性
“上”
(默认)|“回调”
|“关闭”
对象句柄的可见性,指定为“上”
,“回调”
,或“关闭”
.
此属性控制对象在其父对象列表中的可见性。当一个对象在其父对象的子列表中不可见时,通过搜索对象层次结构或查询属性获得对象的函数不会返回该对象。这些功能包括得到
,findobj
,clf
,关闭
.即使对象不可见,它们也是有效的。如果可以访问对象,就可以设置和获取其属性,并将其传递给对对象进行操作的任何函数。
HandleVisibility价值 | 描述 |
---|---|
“上” |
对象总是可见的。 |
“回调” |
对象在回调函数或回调函数调用的函数中可见,但在从命令行调用的函数中不可见。该选项阻止在命令行访问对象,但允许回调函数访问它。 |
“关闭” |
这个物体在任何时候都是看不见的。这个选项对于防止另一个函数对UI的意外更改非常有用。设置HandleVisibility 来“关闭” 在函数执行期间临时隐藏对象。 |
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
类型
- - - - - -UI组件对象的类型
特征向量
UI组件对象的类型,作为包含组件名称的字符向量返回。
属性:
GetAccess |
公共
|
SetAccess |
受保护的
|
NonCopyable |
真正的
|
瞬态 |
真正的
|
标签
- - - - - -对象标识符
”
(默认)|特征向量|字符串标量
对象标识符,指定为字符向量或字符串标量。您可以指定一个惟一的标签
值作为对象的标识符。当需要访问代码中其他地方的对象时,可以使用findobj
方法搜索对象标签
价值。
属性:
GetAccess |
公共
|
SetAccess |
公共
|
依赖 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
用户数据
- - - - - -用户数据
[]
(默认)|数组
用户数据,指定为任何MATLAB数组。例如,可以指定标量、向量、矩阵、单元格数组、字符数组、表或结构。使用此属性可在对象上存储任意数据。
如果您正在使用App Designer,请在应用程序中创建公共或私有属性来共享数据,而不是使用用户数据
财产。有关更多信息,请参见在应用程序设计程序中共享数据.
属性:
GetAccess |
公共
|
SetAccess |
公共
|
瞬态 |
真正的
|
GetObservable |
真正的
|
SetObservable |
真正的
|
例子
IP地址输入
定义一个名为IPAddressComponent
它创建了一个自定义组件,用于输入四个值来形成一个IP地址。
要定义类,创建一个名为IPAddressComponent.m
它包含以下具有以下特性的类定义:
一个
价值
存储IP地址的公共属性。NumericField
而且GridLayout
在水平行中放置四个数字编辑字段的私有属性。一个
设置
初始化方法NumericField
而且GridLayout
.一个
更新
方法更新NumericField
的值。一个
handleNewValue
方法,设置价值
属性根据4个数值编辑字段的值设置。
classdefIPAddressComponent < matlab.ui.componentcontainer.ComponentContainerIPAddressComponent用于IP地址输入的4个编辑字段的集合属性价值(1,4) {mustBeNonnegative, mustBeInteger, mustBeLessThanOrEqual(Value, 255)}= [192 168 1 2];结束事件(HasCallbackProperty, NotifyAccess = protected) ValueChanged将生成% ValueChangedFcn回调属性结束属性(Access = private, Transient, NonCopyable(1、4)matlab.ui.control.NumericEditFieldGridLayoutmatlab.ui.container.GridLayout结束方法(访问=保护)函数设置(obj)设置此组件的初始位置obj。位置= [100 100 150 22];%的布局obj。GridLayout = uigridlayout (obj,(1、5),...“RowHeight”{22},“ColumnWidth”{30日,30日,30日,30日,22},...“填充”,0,“列空间”2);%的构建块为obj. numericfield (k) = uieditfield(obj. numbericfield)。GridLayout,“数字”,...“限制”255年[0],“RoundFractionalValues”,真的,...“字体名”,“快递新”,“FontWeight”,“大胆”,...“ValueChangedFcn”@ (o, e) obj.handleNewValue ());结束结束函数更新(obj)%更新视图为j. numericfield (k). k = 1:4。值= obj.Value (k);结束结束结束方法(访问=私人)函数handleNewValue (obj) obj。价值= [obj.NumericField.Value];执行事件监听器和ValueChangedFcn回调属性通知(obj,“ValueChanged”);结束结束结束
接下来,通过调用IPAddressComponent
构造函数方法提供的ComponentContainer
类,并返回对象为h
.指定一个函数,当组件值发生变化时,在命令窗口中显示新的IP地址。
h = IPAddressComponent;h.ValueChangedFcn = @(o,e) disp([“值更改为:”num2str (h.Value)]);
输入IP地址192.168.1.10
进入编辑字段。MATLAB®在命令窗口中显示更新后的IP地址。
更多关于
为UI组件启用用户定义回调
在定义类时,可以为UI组件触发的事件添加块。
要创建这样的事件块,给类一个事件
块的HasCallbackProperty
属性。当您这样做时,MATLAB为块中的每个事件创建一个公共属性。公共属性存储用户提供的回调,以便在触发事件时执行。公共属性的名称是带有字母的事件名称Fcn
.例如,UI组件可能定义公共事件ValueChanged
并生成相应的公共财产ValueChangedFcn
.使用通知
方法来触发事件并在属性中执行回调。
例如,这是允许用户选择颜色值的UI组件的事件块。
事件(HasCallbackProperty, NotifyAccess = protected) ValueChanged结束
通知
方法来触发ValueChanged
事件中执行回调ValueChangedFcn
属性在用户选择颜色值时。函数getColorFromUser(obj) c = uisetcolor(obj. value);如果(isscalar(c) && (c == 0))返回;结束更新Value属性oldValue = obj.Value;obj。值= c;执行用户回调和监听器通知(obj,“ValueChanged”);结束
f = uifigure;c = ColorSelector (f,“ValueChangedFcn”@ (o, e) disp (“改变”))
组件对象创建行为
在定义了类之后,当用户创建UI组件的实例并将其添加到他们的应用程序中时,MATLAB会依次执行以下步骤:
如果用户没有指定父UI图,则创建一个新的UI图并将组件父到它。
调用类
设置
方法。设置用户指定为名称-值参数的任何组件属性。
调用类
更新
方法。
版本历史
介绍了R2020b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。