uifigure
创建用于设计 App 的图窗
说明
创建一个用于构建用户界面的图窗并返回 fig
= uifigureFigure
对象。这是 App 设计工具使用的图窗类型。
使用一个或多个名称-值参量指定图窗属性。fig
= uifigure(Name=Value
)
示例
创建一个用于构建 App 的空白图窗。
fig = uifigure;
创建具有特定标题和图标的 UI 图窗。
fig = uifigure("Name","Plotted Results", ... "Icon","peppers.png");
查询图窗背景颜色。
c = fig.Color
c = 1×3
0.9608 0.9608 0.9608
创建默认 UI 图窗。
fig = uifigure;
获取该图窗的位置、宽度和高度。
fig.Position
ans = 681 559 560 420
这意味着图窗窗口位于主显示画面左下角的右侧 681 像素和上方 559 像素处,宽 560 像素,高 420 像素。
通过调整位置向量的第三个和第四个元素,将图窗宽度和高度减半。
fig.Position(3:4) = [280 210];
创建两个 UI 图窗窗口。通过将图窗 2 的 WindowStyle
属性值指定为 "modal"
来阻止图窗 1 中的交互。在图窗 2 关闭之前,您无法与图窗 1 交互。
fig1 = uifigure(Name="Figure 1"); fig1.Position = [500 500 370 270]; fig2 = uifigure(Name="Figure 2"); fig2.Position = [540 450 370 270]; fig2.WindowStyle = "modal";
编写 CloseRequestFcn
回调,以便在用户试图关闭窗口时打开模态“确认”对话框。
请将以下代码复制并粘贴到 MATLAB® 编辑器中,然后运行 closeFig
。
function closeFig fig = uifigure(Position=[100 100 425 275]); fig.CloseRequestFcn = @(src,event)my_closereq(src); function my_closereq(fig) selection = uiconfirm(fig,"Close the figure window?",... "Confirmation"); switch selection case 'OK' delete(fig) case 'Cancel' return end end end
点击图窗中的关闭按钮。“确认”对话框随即打开。
更改将鼠标悬停在普通按钮上时显示的鼠标指针符号。
此程序文件名为 setMousePointer.m
,它向您说明如何:
创建一个 UI 图窗,该图窗在鼠标移至按钮上时执行自定义代码。为此,使用
@
运算符将mouseMoved
函数句柄赋给该图窗的WindowButtonMotionFcn
属性。创建一个普通按钮,并指定其坐标和标签。
创建一个名为
mouseMoved
的回调函数,其中包含当鼠标移到该按钮上时要执行的自定义代码。在函数中,查询CurrentPoint
属性以确定鼠标指针坐标。如果指针坐标在普通按钮坐标内,则将Pointer
属性设置为"hand"
。
运行 setMousePointer
。然后将鼠标移到该普通按钮上,以查看鼠标指针符号从箭头变为手形。
function setMousePointer fig = uifigure(Position=[500 500 375 275]); fig.WindowButtonMotionFcn = @mouseMoved; btn = uibutton(fig); btnX = 50; btnY = 50; btnWidth = 100; btnHeight = 22; btn.Position = [btnX btnY btnWidth btnHeight]; btn.Text = "Submit Changes"; function mouseMoved(src,event) mousePos = fig.CurrentPoint; if (mousePos(1) >= btnX) && (mousePos(1) <= btnX + btnWidth) ... && (mousePos(2) >= btnY) && (mousePos(2) <= btnY + btnHeight) fig.Pointer = "hand"; else fig.Pointer = "arrow"; end end end
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: uifigure(Name="My App")
将 My App
指定为 UI 图窗的标题。
注意
此处所列的属性只是可用属性中的一部分。有关完整列表,请参阅 Figure
。
窗口样式,指定为以下值之一:
'normal'
- 图窗显示在一个独立窗口中,该窗口独立于其他 MATLAB 窗口。'docked'
- 图窗停靠在桌面中。'normal'
- 此图窗窗口独立于其他窗口,并且在显示图窗时可以访问其他窗口。'modal'
- 该图窗以正常窗口样式显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。存在多个模态窗口时,最新创建的窗口将会保持焦点并位于所有其他窗口之上,直到变得不可见、恢复为正常窗口样式或被删除。此时,焦点会重新回到上次具有焦点的窗口。
'alwaysontop'
- 图窗显示在所有其他窗口的顶部,包括模态图窗窗口和来自非 MATLAB 应用程序的窗口。其他窗口仍可访问。
注意
以下是 WindowStyle
属性的一些重要特性和一些推荐的最佳做法:
创建 UI 窗口时,应指定
WindowStyle
属性。如果还想要设置图窗的Resize
或Position
属性,先要设置WindowStyle
属性。您可以随时更改图窗的
WindowStyle
属性,包括图窗可见并包含子图窗的情况。但是,在某些系统上,设置该属性可能会导致图窗闪烁或者消失后重新显示,具体取决于系统的正常窗口和模态窗口的实现。为实现最佳视觉效果,应在创建时或图窗不可见时设置WindowStyle
属性。
UI 图窗模态窗口样式行为
当 WindowStyle
设置为 'modal'
时,UI 图窗窗口会阻止在它之前创建的 UI 图窗窗口中的键盘和鼠标交互,并将其 Visible
属性设置为 'on'
。例如,在此示例中,图窗 3 相对于图窗 2 为模态图窗,图窗 2 相对于图窗 1 为模态图窗。
fig1 = uifigure('Name','Figure 1'); fig1.WindowStyle = 'modal'; fig2 = uifigure('Name','Figure 2'); fig2.WindowStyle = 'modal'; fig3 = uifigure('Name','Figure 3'); fig3.WindowStyle = 'modal';
与使用 figure
函数创建的模态图窗不同,使用 uifigure
函数创建的模态图窗不会阻止用户访问用 figure 函数或 MATLAB 桌面创建的图窗。也不会阻止与 MATLAB 以外的应用程序窗口的交互。
模态图窗获得焦点时按 Ctrl+C 会导致图窗恢复到 'normal'
WindowStyle
属性设置。这样用户可以在命令行键入内容。
WindowStyle
属性设置为 'modal'
并且 Visible
属性设置为 'off'
的 UI 图窗在 MATLAB 使它们变得可见之前不会以模态方式运行。因此,您可以隐藏模态窗口供以后重用,而不用销毁它。
模态图窗不显示菜单子级、内置菜单或工具栏。但是,在模态图窗中创建菜单或在具有菜单子级的图窗上将 WindowStyle
属性设置更改为 'modal'
并不是错误。Menu
对象会存在,而且图窗会保留它们。如果您将 UI 图窗的 WindowStyle
属性重置为 'normal'
,则会显示菜单。
图窗的名称,指定为字符向量或字符串标量。
示例: uifigure('Name','Results')
将图窗的名称设置为 'Results'
。
在 App 设计工具中,Name
属性的默认值为 'MATLAB App'
。
图窗的位置和大小,不包括边框、图窗工具和标题栏,指定为 [left bottom width height]
形式的四元素向量。
此表介绍该向量中的每个元素。
元素 | 描述 |
---|---|
left | 从主画面左边缘到窗口的内部左边缘的距离。在具有多个监视器的系统上,该值可能为负数。 如果图窗已停靠,则此值相对于其容器。 |
bottom | 从主画面下边缘到窗口的内部下边缘的距离。在具有多个监视器的系统上,该值可能为负数。 如果图窗已停靠,则此值相对于其容器。 |
width | 窗口的左右内部边缘之间的距离。 |
height | 窗口的上下内部边缘之间的距离。 |
所有测量值都采用 Units
属性指定的单位。
要定位包含边框、图窗工具和标题栏的完整窗口,请使用 OuterPosition
属性。
注意
Windows® 操作系统会强制应用最小窗口宽度和最大窗口大小。如果您指定的图窗尺寸超出这些限制,将按照这些限制而不是指定的尺寸显示图窗。
UI 图窗的位置和大小,不包括边框和标题栏,指定为 [left bottom width height]
形式的四元素向量。
此表介绍该向量中的每个元素。
元素 | 描述 |
---|---|
left | 从主画面左边缘到 UI 图窗窗口的内部左边缘的距离。在具有多个监视器的系统上,该值可能为负数。 |
bottom | 从主画面下边缘到 UI 图窗窗口的内部下边缘的距离。在具有多个监视器的系统上,该值可能为负数。 |
width | UI 图窗的左右内部边缘之间的距离。 |
height | UI 图窗的上下内部边缘之间的距离。 |
局限性
现在,您无法再将使用
uifigure
函数创建的Figure
对象传递给print
函数。如果您试图这么做,MATLAB 将引发错误。有关详细信息,请参阅在 App 设计工具中显示图形。
提示
版本历史记录
在 R2016a 中推出要使某个特定的 UI 图窗窗口保持在其他窗口的前面,请将 WindowStyle
属性设置为 "alwaysontop"
。与模态图窗不同,具有此属性设置的 UI 图窗窗口不限制键盘和鼠标交互。
要将键盘和鼠标交互限制到特定的 UI 图窗窗口,请将 WindowStyle
属性设置为 "modal"
。
要将自定义图标添加到 UI 图窗窗口,请将 Icon
属性设置为图像文件或 m
×n
×3 真彩色数组。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)