目录
语法
说明
示例
创建默认的 UI 图窗
设置和访问属性
更改图窗大小
创建模态 UI 图窗
编写 CloseRequestFcn 以确认关闭 UI 图窗
更改鼠标指针符号
uifigure函数的功能是创建用于设计 App 的图窗。
语法
fig = uifigure
fig = uifigure(Name,Value)
说明
fig = uifigure 创建一个用于构建用户界面的图窗并返回 Figure 对象。这是 App 设计工具使用的图窗类型。
fig = uifigure(Name,Value) 使用一个或多个 Name,Value 对组参数指定图窗属性。
示例
创建默认的 UI 图窗
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 图窗
创建两个 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 以确认关闭 UI 图窗
编写 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 selectioncase 'OK'delete(fig)case 'Cancel'returnendendend
点击图窗中的关闭按钮。“确认”对话框随即打开。
如图所示:
更改鼠标指针符号
更改将鼠标悬停在普通按钮上时显示的鼠标指针符号。此程序文件名为 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';elsefig.Pointer = 'arrow';endend
end
如图所示: