Main Content

uifigure

创建用于设计 App 的图窗

说明

fig = uifigure 创建一个用于构建用户界面的图窗并返回 Figure 对象。这是 App 设计工具使用的图窗类型。

示例

fig = uifigure(Name,Value) 使用一个或多个名称-值参量指定图窗属性。

示例

示例

全部折叠

创建一个用于构建 App 的空白图窗。

fig = uifigure;

Blank UI figure window

创建具有特定标题和图标的 UI 图窗。

fig = uifigure("Name","Plotted Results", ...
    "Icon","peppers.png");

UI Figure window. The title at the top of the window is Plotted Results and the icon is an image of peppers.

查询图窗背景颜色。

c = fig.Color
c = 1×3

    0.9400    0.9400    0.9400

创建默认 UI 图窗。

fig = uifigure;

Blank UI figure window.

获取该图窗的位置、宽度和高度。

fig.Position
ans =

   681   559   560   420

这意味着图窗窗口位于主显示画面左下角的右侧 681 像素和上方 559 像素处,宽 560 像素,高 420 像素。

通过调整位置向量的第三个和第四个元素,将图窗宽度和高度减半。

fig.Position(3:4) = [280 210];

Blank UI figure window. The window is half as tall as half as wide as the default window.

创建两个 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

点击图窗中的关闭按钮。“确认”对话框随即打开。

Confirmation dialog box in a figure window. The dialog says "Close the figure window?" next to a question mark icon. There are OK and Cancel buttons at the bottom.

更改将鼠标悬停在普通按钮上时显示的鼠标指针符号。

此程序文件名为 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

Figure window with a button that says "Submit Changes". The mouse pointer is over the button, and is in the shape of a hand.

输入参数

全部折叠

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

示例: uifigure(Name="My App")My App 指定为 UI 图窗的标题。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: uifigure("Name","My App")My App 指定为 UI 图窗的标题。

注意

此处所列的属性只是可用属性中的一部分。有关完整列表,请参阅 UI Figure 属性

窗口样式,指定为下列值之一:

  • 'normal' - 此图窗窗口独立于其他窗口,并且在显示图窗时可以访问其他窗口。

  • 'modal' - 该图窗以正常窗口样式显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。但是,任何在模态图窗之后创建的新图窗都会显示出来。

    存在多个模态窗口时,最新创建的窗口将会保持焦点并位于所有其他窗口之上,直到变得不可见、恢复为正常窗口样式或被删除。此时,焦点会重新回到上次具有焦点的窗口。

  • 'alwaysontop' - 图窗显示在所有其他窗口的顶部,包括模态图窗窗口和来自非 MATLAB 应用程序的窗口。其他窗口仍可访问。

注意

以下是 WindowStyle 属性的一些重要特性和一些推荐的最佳做法:

  • 创建 UI 窗口时,应始终指定 WindowStyle 属性。如果还想要设置图窗的 ResizePosition 属性,先要设置 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'

UI 图窗的位置和大小,不包括边框和标题栏,指定为 [left bottom width height] 形式的四元素向量。

此表介绍该向量中的每个元素。

元素描述
left从主画面左边缘到 UI 图窗窗口的内部左边缘的距离。在具有多个监视器的系统上,该值可能为负数。
bottom从主画面下边缘到 UI 图窗窗口的内部下边缘的距离。在具有多个监视器的系统上,该值可能为负数。
widthUI 图窗的左右内部边缘之间的距离。
heightUI 图窗的上下内部边缘之间的距离。

局限性

  • 现在,您无法再将使用 uifigure 函数创建的 Figure 对象传递给 print 函数。如果您试图这么做,MATLAB 将引发错误。有关详细信息,请参阅在 App 设计工具中显示图形

提示

  • 使用图形根对象为其他类型的对象设置根级别的默认值。例如,将以后所有图窗的默认颜色图设置为 summer 颜色图。

    set(groot,'DefaultFigureColormap',summer)
    要将属性恢复为其原始 MATLAB 默认值,请使用 'remove' 关键字。
    set(groot,'DefaultFigureColormap','remove')
    有关设置默认值的详细信息,请参阅默认属性值

  • 要将图窗窗口前置,请使用 focus 函数。

版本历史记录

在 R2016a 中推出

全部展开