Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

uifigure

创建用于设计 App 的图窗

说明

示例

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

示例

fig = uifigure(Name,Value) 使用一个或多个 Name,Value 对组参数指定图窗属性。

示例

全部折叠

fig = uifigure;

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

fig = uifigure('Name','Plotted Results');

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

p = fig.Position
ans =

   680   678   560   420

创建默认 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 = @(fig,event)my_closereq(fig);

    function my_closereq(fig,selection)
        
        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

输入参数

全部折叠

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: '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')
    有关设置默认值的详细信息,请参阅默认属性值

在 R2016a 中推出