主要内容

matlab.ui.componentcontainer.ComponentContainer类

包:matlab.ui.componentcontainer

开发定制的UI组件对象的基类

自从R2020b

描述

matlab.ui.componentcontainer.ComponentContainer是一个类你构建自己的定制的UI组件对象的类。当你定义基类的子类,可以使用ComponentContainer属性和方法来构建UI组件对象。在第一行指定该语法的直接继承类定义文件ComponentContainer类,MyComponent是你的名字对象:

MyComponent classdef添加< matlab.ui.componentcontainer.ComponentContainer

matlab.ui.componentcontainer.ComponentContainer类是一个处理类。

类属性

文摘
真正的
ConstructOnLoad
真正的
HandleCompatible
真正的

类属性的信息,请参阅类属性

属性

全部展开

颜色和样式

背景颜色,作为一个RGB值,指定十六进制的颜色代码,或者颜色表中列出的选项之一。

RGB三胞胎和十六进制颜色代码可用于指定自定义颜色。

  • 一个RGB值三元素行向量的元素指定强度的红色,绿色和蓝色的组件的颜色。强度必须在范围内[0,1];例如,(0.4 0.6 0.7)

  • 十六进制颜色代码是一个特征向量或一个字符串标量,始于一个散列符号(#)后面跟着三个月或六个十六进制数字,它的范围可以从0F。的值是不区分大小写的。因此,颜色代码“# 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”

样本的RGB值(0 0.4470 - 0.7410),显示为深蓝色

(0.8500 0.3250 0.0980) “# D95319”

样本的RGB值(0.8500 0.3250 0.0980),它表现为暗橙

(0.9290 0.6940 0.1250) “# EDB120”

样本的RGB值(0.9290 0.6940 0.1250),它表现为暗黄色

(0.4940 0.1840 0.5560) “# 7 e2f8e”

样本的RGB值(0.4940 0.1840 0.5560),它表现为深紫色

(0.4660 0.6740 0.1880) “# 77 ac30”

样本的RGB值(0.4660 0.6740 0.1880),它表现为中绿色

(0.3010 0.7450 0.9330) “# 4 dbeee”

样本的RGB值(0.3010 0.7450 0.9330),它表现为浅蓝色

(0.6350 0.0780 0.1840) “# A2142F”

样本的RGB值(0.6350 0.0780 0.1840),它表现为深红色

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
GetObservable
真正的
SetObservable
真正的
交互性

可见性状态,指定为“上”“关闭”或数字或逻辑1(真正的)或0()。的值“上”相当于真正的,“关闭”相当于。因此,您可以使用这个属性的值作为一个逻辑值。存储的值是作为一个开/关逻辑值的类型matlab.lang.OnOffSwitchState

  • “上”——显示对象。

  • “关闭”——隐藏对象没有删除它。你仍然可以访问一个看不见的UI组件的属性。

让你的应用程序启动更快,设置可见财产“关闭”对所有组件,不需要在启动时出现。

改变大小的一个看不见的容器触发SizeChangedFcn回调时变得可见。

改变了可见属性的容器改变的值可见子组件的属性。这是真的,即使藏容器使子组件被隐藏。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
GetObservable
真正的
SetObservable
真正的

指定为一个上下文菜单快捷菜单对象创建使用uicontextmenu函数。使用这个属性来显示一个上下文菜单,当你右键单击一个区域的组件,不包含任何潜在的UI组件或图形对象。

显示一个上下文菜单,当你右键点击自定义UI组件的任何部分,编写代码来设置快捷菜单所有潜在的UI组件和图形对象的属性时快捷菜单您的自定义组件的属性集。

例子:组件上下文菜单

这段代码创建了一个简单的自定义UI组件与一个标签和一个按钮在网格布局管理器。当一个用户创建的实例SimpleComponent组件类和分配一个上下文菜单,中的代码更新方法然后向底层分配相同的上下文菜单GridLayout,按钮,标签对象。

classdefSimpleComponent < matlab.ui.componentcontainer.ComponentContainer属性(=私人访问,瞬态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);结束函数更新(obj) obj.GridLayout。快捷菜单= obj.ContextMenu; obj.Label.ContextMenu = obj.ContextMenu; obj.Button.ContextMenu = obj.ContextMenu;结束结束结束

创建一个SimpleComponent对象,并指定一个上下文菜单。右键单击空白的组件,并在标签上。上下文菜单中出现。

无花果= uifigure;厘米= uicontextmenu(图);m1 = uimenu(厘米);SimpleComponent(图,“快捷菜单”厘米);

属性:

GetAccess
公共
SetAccess
公共
NonCopyable
真正的
瞬态
真正的
GetObservable
真正的
SetObservable
真正的
位置

UI组件的大小和位置,不包括利润等装饰轴标签和刻度线。这个属性指定为一个向量的形式(左底宽高)

请注意

设置这个属性没有影响当父的UI组件是一个GridLayout

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的

度量单位,指定为“像素”

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
GetObservable
真正的
SetObservable
真正的

布局选项,指定为一个GridLayoutOptions对象。这个属性指定组件的选项的网格布局容器。如果组件不是孩子的网格布局容器(例如,它是一个孩子的图或面板),然后这个属性是空的,没有任何影响。然而,如果组件是一个孩子的网格布局容器,您可以将组件所需的行和列的网格通过设置属性GridLayoutOptions对象。

例如,这段代码的地方一个图像组件在第三行和第二列的网格。

3 g = uigridlayout ([4]);我=用户界面图像(g);即时通讯。ImageSource =“peppers.png”;即时通讯。ScaleMethod =“填满”;im.Layout。行= 3;im.Layout。列= 2;

使图像跨越多个行或列,指定房地产作为一个双元素向量。例如,这张图片跨越列2通过3

im.Layout。列= [2 3];

属性:

GetAccess
公共
SetAccess
公共
回调

大小改变回调,指定这些值之一:

  • 一个处理函数。

  • 细胞数组中第一个元素是一个函数处理。后续单元阵列中的元素传递给回调函数的参数。

  • 一个特征向量包含有效的MATLAB表达式(不推荐)。MATLAB计算表达式的基本工作空间。

SizeChangedFcn回调执行时间:

  • 首次成为可见的组件。

  • 该组件是可见的,它的大小变化。

  • 组件可以第一次后尺寸变化。这种情况发生在规模变化而组件是无形的,然后就变得可见。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
AbortSet
真正的
GetObservable
真正的
SetObservable
真正的
NonCopyable
真正的

对象创建函数,指定这些值之一:

  • 函数处理。

  • 细胞数组中第一个元素是一个函数处理。后续单元阵列中的元素传递给回调函数的参数。

  • 特征向量包含一个有效的MATLAB表达式(不推荐)。MATLAB计算表达式的基本工作空间。

更多信息关于指定一个回调函数处理,细胞数组,或字符向量,明白了回调程序设计师

这个属性指定一个回调函数执行时MATLAB创建对象。MATLAB之前执行初始化所有的属性值CreateFcn回调。如果你不指定CreateFcn属性,然后MATLAB执行默认创建函数。

设置CreateFcn属性在一个现有的组件没有影响。

如果指定这个属性作为处理函数或细胞数组,您可以访问的对象被创建使用回调函数的第一个参数。否则,使用gcbo函数来访问该对象。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
AbortSet
真正的
GetObservable
真正的
SetObservable
真正的
NonCopyable
真正的

对象删除函数,指定这些值之一:

  • 函数处理。

  • 细胞数组中第一个元素是一个函数处理。后续单元阵列中的元素传递给回调函数的参数。

  • 特征向量包含一个有效的MATLAB表达式(不推荐)。MATLAB计算表达式的基本工作空间。

更多信息关于指定一个回调函数处理,细胞数组,或字符向量,明白了回调程序设计师

这个属性指定一个回调函数执行时MATLAB删除对象。MATLAB执行DeleteFcn回调之前破坏对象的属性。如果你不指定DeleteFcn属性,然后MATLAB默认执行删除功能。

如果指定这个属性作为处理函数或细胞数组,您可以访问的对象被删除使用回调函数的第一个参数。否则,使用gcbo函数来访问该对象。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
AbortSet
真正的
GetObservable
真正的
SetObservable
真正的
NonCopyable
真正的
回调执行控制

回调中断,指定为“上”“关闭”或数字或逻辑1(真正的)或0()。的值“上”相当于真正的,“关闭”相当于。因此,您可以使用这个属性的值作为一个逻辑值。存储的值是作为一个开/关逻辑值的类型matlab.lang.OnOffSwitchState

这个属性决定了如果一个回调可以运行中断。有两种回调状态考虑:

  • 运行回调是当前执行的回调。

  • 打断回调是一个回调,试图中断正在运行的回调。

每当MATLAB调用回调,回调试图中断正在运行的回调(如果存在的话)。的可中断对象的属性拥有运行调决定是否允许中断。

  • 的值“上”允许其他回调中断对象的回调。中断发生在接下来的MATLAB处理队列,比如有一个的时候drawnow,,uifigure,getframe,等待,或暂停命令。

    • 如果运行调包含其中的一个命令,然后用MATLAB停止执行回调并执行中断的回调。MATLAB简历执行运行时回调打断调完成。

    • 如果跑回调不包含其中的一个命令,然后用MATLAB完成执行回调没有中断。

  • 的值“关闭”块全部中断。的BusyAction属性的对象拥有打断调决定如果打断回调被丢弃或放到一个队列中。

请注意

回调中断和执行不同的行为在这些情况下:

  • 如果中断的回调DeleteFcn,CloseRequestFcnSizeChangedFcn回调,那么无论发生中断可中断属性值。

  • 如果运行目前执行的回调等待函数,那么无论发生中断可中断属性值。

  • 计时器根据时间表不管对象执行可中断属性值。

当一个中断发生,MATLAB不保存属性或状态的显示。例如,返回的对象gcagcf执行命令时可能会改变另一个回调。

属性:

GetAccess
公共
SetAccess
公共
GetObservable
真正的
SetObservable
真正的

回调排队,指定为“队列”“取消”。的BusyAction属性决定了MATLAB如何处理中断的执行回调。有两种回调状态考虑:

  • 运行回调是当前执行的回调。

  • 打断回调是一个回调,试图中断正在运行的回调。

每当MATLAB调用回调,回调试图中断一个正在运行的回调。的可中断对象拥有的属性决定是否允许中断正在运行的回调。如果中断是不允许的,那么BusyAction属性的对象拥有打断调决定如果它被丢弃或放入队列中。这些都是可能的值的BusyAction属性:

  • “队列”——将中断处理回调在一个队列跑回调结束后执行。

  • “取消”——不执行中断回调。

属性:

GetAccess
公共
SetAccess
公共
GetObservable
真正的
SetObservable
真正的

删除状态,作为一个开/关返回逻辑值的类型matlab.lang.OnOffSwitchState

MATLAB设置BeingDeleted财产“上”DeleteFcn回调函数开始执行。的BeingDeleted房地产仍将“上”直到组件对象已不复存在。

检查的价值BeingDeleted属性来验证对象不会被删除之前查询或修改它。

属性:

GetAccess
公共
SetAccess
受保护的
GetObservable
真正的
SetObservable
真正的
父/子

父容器的组件,指定为一个,面板,选项卡,或GridLayout对象。

属性:

GetAccess
公共
SetAccess
公共
瞬态
真正的
依赖
真正的
NonCopyable
真正的
GetObservable
真正的
SetObservable
真正的

UI组件的孩子,作为一个空返回GraphicsPlaceholder数组中。自定义UI组件没有孩子。设置这个属性没有影响。

属性:

GetAccess
公共
SetAccess
公共
瞬态
真正的
依赖
真正的
NonCopyable
真正的

指定为对象的可见性处理“上”,“回调”,或“关闭”

这个属性控制对象的可见性在其父母的孩子。当一个对象不可见的父母的孩子,它不是由函数返回获取对象通过搜索对象层次结构或查询属性。这些功能包括得到,findobj,clf,关闭。对象是有效的,即使他们是不可见的。如果您可以访问一个对象,你可以设置它的属性,并将其传递给任何函数来操作对象。

HandleVisibility价值 描述
“上” 对象总是可见的。
“回调” 对象是可见的在回调函数或函数调用回调,但不是在从命令行调用的函数。这个选项块访问对象的命令行,但是允许回调函数来访问它。
“关闭” 对象是无形的。这个选项是有用的防止意外更改UI被另一个函数。设置HandleVisibility“关闭”暂时隐藏对象在这个函数的执行。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
GetObservable
真正的
SetObservable
真正的
标识符

类型的UI组件对象,包含组件名称作为特征向量返回。

属性:

GetAccess
公共
SetAccess
受保护的
NonCopyable
真正的
瞬态
真正的

对象标识符指定为一个特征向量或字符串标量。您可以指定一个唯一的标签价值作为一个对象的标识符。当你需要访问对象在您的代码,您可以使用findobj基于函数搜索对象标签价值。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的
GetObservable
真正的
SetObservable
真正的

用户数据,指定为任何MATLAB数组。例如,您可以指定一个标量、向量,矩阵,单元阵列,字符数组,表,或者结构。使用这个属性来存储任意数据对象。

如果你是在应用程序设计师工作,创建公共或私有属性的应用程序共享数据,而不是使用用户数据财产。有关更多信息,请参见在应用程序设计应用程序共享数据

属性:

GetAccess
公共
SetAccess
公共
瞬态
真正的
GetObservable
真正的
SetObservable
真正的

方法

全部展开

例子

全部折叠

定义一个类IPAddressComponent创建一个自定义组件输入四值形成一个IP地址。

定义类,创建一个文件IPAddressComponent.m与这些特性包含以下类定义:

  • 一个价值公共财产,商店的IP地址。

  • NumericFieldGridLayout私有财产,四个数字编辑字段在水平行。

  • 一个设置初始化方法NumericFieldGridLayout

  • 一个更新方法,更新NumericField值时,IP地址的变化。

  • 一个handleNewValue方法设置价值财产基于4数字编辑字段的值。

classdefIPAddressComponent < matlab.ui.componentcontainer.ComponentContainer% IPAddressComponent一组4编辑字段输入IP地址属性价值(1、4){mustBeNonnegative、mustBeInteger mustBeLessThanOrEqual(价值255美元)}= (192 168 1 2);结束事件ValueChanged (HasCallbackProperty NotifyAccess =保护)% ValueChangedFcn调属性将生成结束属性(=私人访问,瞬态NonCopyable) NumericField(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);%的构建块k = 1:4 obj.NumericField (k) = uieditfield (obj.GridLayout,“数字”,“限制”255年[0],“RoundFractionalValues”,真的,“字体名”,“快递新”,“FontWeight”,“大胆”,“ValueChangedFcn”@ (o, e) obj.handleNewValue ());结束结束函数更新(obj)%更新视图k = 1:4 obj.NumericField (k)。值= 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地址。

更多关于

全部展开

版本历史

介绍了R2020b