uimenu 菜单及设计
1.uimenu 菜单及设计
菜单是动态呈现的选择列表,它对应于相关方法(常称为命令)或GUI状态。菜单可以包含其他菜单或者菜单项,也可以包含菜单(即分层的菜单),表示可以执行的命令或所选择的GUI状态。菜单可以与应用程序的菜单栏相关,也可以漂浮在应用程序窗口之上,形成弹出式菜单。
1.1建立用户菜单
MATLAB的各个图形窗口有自己的菜单栏,包括File,Edit,Windows和Help等菜单项。为了建立用户自己的菜单系统,可以先将图形窗口的MenuBar属性事先设置为none,以取消图形窗口默认的菜单,然后再建立用户自己的菜单。要建立用户菜单可用uimenu函数,uimenu函数的调用格式为
H = uimenu(Hp,属性名1,属性值1,属性名2,属性值2, …)
其功能为创建句柄值为 Hm 的自定义的用户菜单。Hp为其父对象的句柄,属性名和属性值构成属性二元对,定义用户菜单的属性。
该函数可以用于建立一级菜单项和子菜单项。建立一级菜单项的函数调用格式为
一级菜单项句柄 = uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)
建立子菜单项的函数调用格式为
子菜单项句柄 = uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…)
在MATLAB还可以进行隐藏和显示标准菜单的操作,其常用的指令如下:
创建图形窗: h= Figure;
隐去标准菜单使用命令: set(h, ‘MenuBar’, ‘none’); set( gcf , ‘menubar’ , menubar) ;
恢复标准菜单使用命令: set( gcf, ‘menubar’, ‘figure’)。
建立一个菜单系统
screen = get(0, 'ScreenSize');
W = screen(3);H= screen(4);
hf = figure( 'Color',[1,1,1],'Position',[1,1,0.4*W,0.3* H],...'Name','菜单示例','NumberTitle', 'off', 'MenuBar', 'none');
hfile= uimenu(hf, 'label','&文件');
hhelp= uimenu(hf, 'label','&帮助');
uimenu(hfile, 'label', '&新建','callback', 'disp("New Item")');
uimenu(hfile, 'label', '&打开','callback', 'disp( "Open Item")');
hsave = uimenu(hfile, 'label', '&保存','Enable', 'off');
uimenu(hsave, 'label', 'Text file', 'callback', 'k1 = 0;k2 = 1;file01;');
uimenu( hsave, 'label', 'Graphics file', 'callback', 'k1= 1;k2= 0;file10;');
uimenu(hfile, 'label', '&保存到','callback', 'disp("Save As Item")');
uimenu(hfile, 'label', '&退出','separator', 'on', 'callback', 'close(hf)');
uimenu(hhelp, 'label', '关于','callback',['disp( "Help Item");','set(hsave, "Enable", "on")']);
结果显示:
2.菜单对象常用属性
菜单对象除具有Children(子对象)、Parent(父对象)、Tag(标签)、Type(类型)、UserData(用户数据)、Enable(使能)和Visible(可见性)等公共属性,还有一些常用的特殊属性,如回调(Callback)属性和菜单名(Label)。另外,用户菜单的外观有四个属性:Position(位置) ,Separator(分隔线) ,Checked(检录符)和ForeGroundColor( 前景颜色)。
下图中列出了MATLAB 4.2版本中的uimenu对象的属性及其属性值。注意:带
有“*”的属性是非文件式的,使用时需加小心;在括号“{ }”内的属性值是默认值。
例 Callback 属性示例,在图形窗上自制一个名为Callback 的“顶层莱单项”,当用鼠标单击该菜单项时,将产生一个带分格的封闭坐标轴。通过本例说明回调属性的运作机理、用户顶层菜单项的制作、uimenu属性的设置方法以及复杂字符串的构成方法和注意事项。
在MATLAB指令窗中运行以下程序可产生带分格的封闭坐标轴:
grid on, set(gca, 'box', 'on')
在MATLAB指令窗中用以下eval指令可产生与上面相同的界面:
eval( 'grid on, set(gca, "box","on")')
- 方法一:
uimenu( 'label', 'Callback ','Callback', 'grid on, set(gca, 'box','on')% 直接连续表示法
- 方法二:
uimenu( 'Label', 'Example',...
%方括号续行号表示法'Callback',['grid on,',...'set(gca, "box", "on");'])
- 方法三:
MnE = 'Example';
%串变量法
GB=['grid on,','set(gca, "box", "on"), '];
uimenu( 'Label', MnE, 'Callback' ,GB)
- 方法四:
Mgui.Label = 'Example';
%构架法
Mgui.Callback = ['grid on; ', 'set(gca, "box","on");'];
uimenu( Mgui)
例 Position 和Separator属性示例,设计要求:把用户菜单Option设置为顶层的第三菜单项;下拉菜单被两条分隔线分为三个菜单区;最下菜单项又由两个子菜单组成。
程序命令如下:
figure
h_menu= uimenu( 'label' ,'Option' ,'Position' ,3);
h_subl = uimenu(h_menu, 'label', 'grid on', 'callback', 'grid on');
h_sub2 = uimenu(h_menu, 'label' ,'grid off','callback' ,'grid off');
h_sub3= uimenu(h_menu, 'label', 'box on','callback', 'box on','separator', 'on' );
h_sub4= uimenu(h_menu, 'label', 'box off', 'callback' ,'box off' );
h_sub5 = uimenu(h_menu, 'label', '颜色', 'Separator', 'on' );
h_subsubl = uimenu(h_sub5, 'label', '红色' ,'ForeGroundColor' ,'r','callback','set(gcf, "Color", "r")');
h_subsub2 = uimenu(h_sub5, 'label', '复位','callback' ,'set(gcf, "Color", "W")');
例 Checked 属性示例,当某菜单项被选中后,使该菜单项贴上检录符“√”。
程序命令如下:
figure
hm0=uimenu( 'label', 'option');
h1 = uimenu(hm0, 'label', '显示网格',...'callback',[...'grid on;',...'set(h1, "checked", "on");'....'set(h2, "checked", "off");'...]);
h2 = uimenu(hm0, 'label', '不显示网格',...'callback',[...'grid off;',...'set(h2, "checked", "on"),'...'set(h1, "checked", "off"),'...
]);
例 Enable 和Visible属性示例。
程序命令如下:
clc;clear;close all;
h_menu= uimenu( 'label' , 'option' );
h_sub1 = uimenu(h_menu, 'label', 'Axis on' );
h_sub2 = uimenu(h_menu, 'label' ,'Axis off','enable', 'off');
set(h_sub1, 'callback' ,['axis on;','set(h_sub1, "enable", "off");','set(h_sub2, "enable", "on")']);
set(h_sub2, 'callback' ,['axis off;','set(h_sub1, "enable", "on");','set(h_sub2, "enable","off")']);
1.2 上下文菜单的建立
用鼠标右键单击某对象时在屏幕上弹出的菜单叫作上下文菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立上下文菜单,具体步骤如下:
- 利用uicontextmenu函数建立上下文菜单,格式为
he= uicontextmenu:其功能建立上下文菜单,并将句柄值赋给变量hc。
- 利用uimenu函数为上下文菜单建立菜单项,格式为
uimenu(‘上下文菜单名’,属性名,属性…):其功能为创建的上下文菜单赋值,其 中属性名和属性值构成属性二元对。
- 利用set函数将该上下文菜单和某图形对象联系起来。
例 绘制曲线 y=3e-0.6x*sin(2 pix),并建立一个与之相联系的上下文菜单,用以控制曲线的线型和曲线宽度。
程序命令如下:
clc;clear;close all;
x = 0:pi/100:2*pi;
y = 3*exp(-0.6*x).*sin(2*pi*x);
h1 = plot(x,y);
hc = uicontextmenu; %建立上下文菜单
hls= uimenu(hc, 'Label', '线型'); %建立莱单项
hlw= uimenu(hc, 'Label', '线宽');
uimenu(hls, 'Label', '虚线', 'callback', 'set(h1, "LineStyle",":");');
uimenu(hls, 'Label', '实线', 'callback', 'set(h1, "LineStyle","-");');
uimenu(hlw, 'Label', '加宽', 'callback', 'set(h1, "LineWidth",2);');
uimenu(hlw, 'Label', '变细', 'callback', 'set(h1, "LineWidth",0.5);');
set(h1, 'UIContextMenu' , hc);%将该上下文菜单和曲线对象联系起来
uimenu 菜单及设计相关推荐
- html 后台参数attribute_平台管理后台与商家菜单资源管理:商家权限及其菜单资源管理设计...
商家权限及其菜单资源管理设计 在商家的菜单体系中,我们设计了一个三级菜单,分别为分类.模块和资源.其中,分类菜单是顶级菜单,表示一个微服务应用;模块菜单是一个二级菜单,表示一个应用功能(实体)的主页; ...
- UI实用素材|下拉菜单细节设计,分层呈现
下拉菜单是UI设计,网页设计中的基础控件,也是平时大家做设计时会用到的常用组件,所以有必要对它进行全面深入的了解. 下拉式菜单 下拉菜单概念 下拉菜单在UI设计领域经常饱受批评,但这也不是没有理由的. ...
- HTML5导航栏菜单的设计与实现
<html><head><meta charset="utf-8"><title>导航栏菜单的设计与实现</title> ...
- Linux - 可视化菜单界面设计
优化屏幕刷新 问题 刷新多个窗体需要一些繁琐,在一个慢速的链接上,屏幕的绘制相当的慢 目标就是要尽量减少要在屏幕上的绘制的字符数 基本函数 int wnoutrefresh(WINDOW *windo ...
- CSS之咖啡菜单网页设计
今天记录学习的设计网站首页的咖啡菜单,综合运用所学习的html,css背景,文本,字体,链接,表格,盒子,选择器,定位,以及css3的阴影,圆角边框,2d变换等内容. ㈠咖啡菜单整体样式 运用html ...
- 一个开源经典的MCU菜单框架设计
来源:嵌入式专栏 不知道有多少人折腾过液晶显示的菜单,我觉得很多人都应该搞过,我还记得以前大学参加电子设计竞赛获奖的作品,我就用到了一个12864,里面有菜单功能. 以前可能觉得菜单高大上,其实并不是 ...
- 一个产品级MCU菜单框架设计
关注+星标公众号,不错过精彩内容 转自 | 嵌入式云IOT技术圈 微信公众号 | 嵌入式专栏 不知道有多少人折腾过液晶显示的菜单,我觉得很多人都应该搞过,我还记得以前大学参加电子设计竞赛获奖的作品,我 ...
- 【MATLAB】UIMENU菜单的应用
目录 UIMENU菜单的应用 UIMENU菜单的应用 h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例' ...
- ABP +VUE Elment 通用高级查询(右键菜单)设计+LINQ通用类Expression<Func<TFields, bool>>方法
ABP +VUE Elment 通用高级查询(右键菜单)设计+LINQ通用类Expression 1. 目前需要用VUE实现源cs系统报表的右键菜单所有和自定义查询功能. 1.1 CS端的右键菜单效果 ...
最新文章
- tomcat8 启动项目pom.xml配置
- Android之----Log详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- lemur run PLSA
- java面向对象的理解_java胜于C语言,却又静态面向对象,简单?
- 数据结构-第10周作业(二叉树的创建和遍历算法)
- 数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案
- 锐道发布Dorado Dorado7标准件 -1.0.24 beta版
- 0基础尝试实现UnityURP渲染管线的AdditionalLit(点光源,聚光灯)非平行光的光照模型代码
- Google的通用翻译机能成为未来的巴别鱼吗?
- rsa私钥 txt转化为pem格式
- 使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程
- 终于搞懂了el-dialog属性modal-append-to-body,append-to-body的作用【图解】
- 【xsy2440】【GDOI2016】疯狂动物城
- 《SPSS统计分析与行业应用实战》之ROC曲线案例
- 图网络算法——概率图介绍与贝叶斯网络
- 阿里分布式开放消息服务(ONS)原理与实践——笔记整理
- c++ ---- 递归
- 解决jmeter进行分布式测试,远程机器来运行脚本,在察看结果树中的响应数据项为空白?
- 学会了C语言可以开发出很多东西吗?
- BlackHat上的工控蠕虫病毒 绿盟科技工控研究员用SCL语言编写实现 录像让你亲眼看看...
热门文章
- bp暴力破解(转载)
- 计算机导论二进制小数乘法,二进制计算
- 海盗喝啤酒问题Java解法
- 计算火车运行时间 本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间
- 末日启示:向死而生--《罗辑思维》第一季第一期
- 借用 potplayer 播放器,在本地播放 b 站视频也能看弹幕了
- 腕能助手android9,篮球教学助手安卓版
- ubuntu设置共享文件夹
- Mendeley中WordPlugin问题
- 计算机中怎样重新安装ps,【2人回答】电脑要重装系统,不想重装Photoshop CS6,怎么办?-3D溜溜网...