界面菜单(uimenu)
1 图形窗口的标准菜单
【例1】本例说明:如何隐藏和恢复标准菜单的显示。 (1)
H_fig=figure (2)
set(H_fig , \'MenuBar\',\'none\') ; set(gcf,\'menubar\',menubar); (3)
set(gcf,\'menubar\',\'figure\');
图 1
图 2 2 自制的用户菜单
【例 2】本例演示:如何自制一个带下拉菜单表的用户菜单(如图3 所示)。该 菜单能使图形窗背景颜色设置为蓝色或红色。 figure h_menu=uimenu(gcf,\'label\',\'Color\'); % h_submenu1=uimenu(h_menu,\'label\',\'Blue\',...% \'callback\',\'set(gcf,\'\'Color\'\',\'\'blue\'\')\'); % h_submenu2=uimenu(h_menu,\'label\',\'Red\',...% \'callback\',\'set(gcf,\'\'Color\'\',\'\'red\'\')\'); %
图 3 3 用户菜单的属性 3.1 回调属性和菜单名
(1)菜单名属性 (2)回调属性
【例3】本例的目标是:在图形窗上自制一个名为【Test】的“顶层菜单项”;当用
鼠标点动该菜单项时,将产生一个带分格的封闭坐标轴。通过本例说明:(A)回调属性的 运作机理;(B)用户顶层菜单项的制作(C)uimenu 属性的设置方法;(D)复杂字符串 的构成方法和注意事项。 (1)
grid on,set(gca,\'box\',\'on\')
图 4 (2)
eval(\'grid on,set(gca,\'\'box\'\',\'\'on\'\')\') (3)
uimenu(\'Label\',\'Test\',\'Callback\',\'grid on,set(gca,\'\'box\'\',\'\'on\'\'),\')
图 5 (4)
uimenu(\'Label\',\'Test\', ...\'Callback\',[\'grid on,\' , ...\'set(gca,\'\'box\'\',\'\'on\'\');\']) (5)
Lpv=\'Test\'; Cpv=[\'grid on,\',\'set(gca,\'\'box\'\',\'\'on\'\'),\']; uimenu(\'Label\', Lpv, \'Callback\' , Cpv) (6)
PS.Label=\'Test\'; PS.Callback=[\'grid on;\',\'set(gca,\'\'box\'\',\'\'on\'\');\']; uimenu(PS) 3.2 设置简捷键或快捷键
【例 4】本例目标:使图3 所示菜单成为图6 那样,Color 菜单项及其下拉 的Blue 菜单各带一个简捷键,而另一项下拉菜单Red 带一个快捷键。 figure h_menu=uimenu(gcf,\'Label\',\'&Color\'); h_submenu1=uimenu(h_menu,\'Label\',\'&Blue\',...\'Callback\',\'set(gcf,\'\'color\'\',\'\'blue\'\')\'); h_submenu=uimenu(h_menu,\'label\',\'Red\',...\'Callback\',\'set(gcf,\'\'color\'\',\'\'red\'\')\',...\'Accelerator\',\'r\');
图 6 3.3 用户菜单的外观设计
【例 5】本例演示:(A)把用户菜单 \'Option\' 设置为顶层的第3菜单项;(B)下 拉菜单被两条分隔线分为三个菜单区;(C)最下菜单项又有两个子菜单组成。 (1) figure BackColor=get(gcf,\'Color\'); h_menu=uimenu(\'label\',\'Option\',\'Position\',3); h_sub1=uimenu(h_menu,\'label\',\'grid on\',\'callback\',\'grid on\'); h_sub2=uimenu(h_menu,\'label\',\'grid off\',\'callback\',\'grid on\'); 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\',\'Figure Color\',\'Separator\',\'on\'); % h_subsub1=uimenu(h_sub5,\'label\',\'Red\',\'ForeGroundColor\',\'r\',...% \'callback\',\'set(gcf,\'\'Color\'\',\'\'r\'\')\'); h_subsub2=uimenu(h_sub5,\'label\',\'Reset\',...\'callback\',\'set(gcf,\'\'Color\'\',BackColor)\');
图 7 (2)
Pos_O=get(h_menu,\'position\'), %查询Option 菜单位置值 Pos_BoxOn=get(h_sub3,\'position\') %查询box ob 子菜单位置值 Pos_Red=get(h_subsub1,\'position\') %查询red 子菜单的位置值 Pos_O = 3 Pos_BoxOn = 3 Pos_Red = 1 【例 6】本例演示:当某菜单项选中后,如何使该菜单项贴上检录符“√”。 figure h_menu=uimenu(\'label\',\'Option\'); h_sub1=uimenu(h_menu,\'label\',\'Grid on\',...% \'callback\',[...\'grid on,\',...\'set(h_sub1,\'\'checked\'\',\'\'on\'\'),\',...%\'set(h_sub2,\'\'checked\'\',\'\'off\'\'),\',...]); h_sub2=uimenu(h_menu,\'label\',\'Grid off\',...% \'callback\',[...\'grid off,\',...\'set(h_sub2,\'\'checked\'\',\'\'on\'\'),\',...\'set(h_sub1,\'\'checked\'\',\'\'off\'\'),\',...]);
图 8 3.4 使能(Enable)与可见性(Visible)属性
【例 7】本例目标:制作一个带四个子菜单项的顶层菜单项;该下拉菜单分为两个
功能区;每个功能区的两个菜单项是相互对立的,因此采用使能属性处理;当图形窗坐标轴 消隐时,整个坐标分隔控制功能区不可见。 (1) clf h_menu=uimenu(\'label\',\'Option\'); h_sub1=uimenu(h_menu,\'label\',\'Axis on\'); h_sub2=uimenu(h_menu,\'label\',\'Axis off\',\'enable\',\'off\'); h_sub3=uimenu(h_menu,\'label\',\'Grid on\',...\'separator\',\'on\',\'visible\',\'off\'); h_sub4=uimenu(h_menu,\'label\',\'Grid off\',...\'visible\',\'off\'); set(h_sub1,\'callback\',[...\'Axis on,\',...\'set(h_sub1,\'\'enable\'\',\'\'off\'\'),\',...\'set(h_sub2,\'\'enable\'\',\'\'on\'\'),\',...\'set(h_sub3,\'\'visible\'\',\'\'on\'\'),\',...\'set(h_sub4,\'\'visible\'\',\'\'on\'\'),\']); set(h_sub2,\'callback\',[...\'axis off,\',...\'set(h_sub1,\'\'enable\'\',\'\'on\'\'),\',...\'set(h_sub2,\'\'enable\'\',\'\'off\'\'),\',...\'set(h_sub3,\'\'visible\'\',\'\'off\'\'),\',...\'set(h_sub4,\'\'visible\'\',\'\'off\'\'),\']); set(h_sub3,\'callback\',[...\'grid on,\',...\'set(h_sub3,\'\'enable\'\',\'\'off\'\'),\',...\'set(h_sub4,\'\'enable\'\',\'\'on\'\'),\']); set(h_sub4,\'callback\',[...\'grid off,\',...\'set(h_sub3,\'\'enable\'\',\'\'on\'\'),\',...\'set(h_sub4,\'\'enable\'\',\'\'off\'\'),\']); (2)
图 9 (3)
图 10 (4)
图 11 (5)
图 12 10.3.4 现场菜单的制作
【例 8】目标:绘制一条Sa 曲线,创建一个与之相联系的现场菜单,用以控制Sa 曲 线的颜色。 (1)
t=(-3*pi:pi/50:3*pi)+eps; y=sin(t)./t; hline=plot(t,y); cm=uicontextmenu; % uimenu(cm,\'label\',\'Red\',\'callback\',\'set(hline,\'\'color\'\',\'\'r\'\'),\') uimenu(cm,\'label\',\'Blue\',\'callback\',\'set(hline,\'\'color\'\',\'\'b\'\'),\') uimenu(cm,\'label\',\'Green\',\'callback\',\'set(hline,\'\'color\'\',\'\'g\'\'),\') set(hline,\'uicontextmenu\',cm) (2)
图13
2013-03-08 figure
BackColor=get(gcf,\'Color\');
h_menu=uimenu(\'label\',\'Option\',\'Position\',3); h_sub1=uimenu(h_menu,\'label\',\'grid on\',...
\'callback\',[...\'grid on,\',...
\'set(h_sub1,\'\'checked\'\',\'\'on\'\'),\',...\'set(h_sub2,\'\'checked\'\',\'\'off\'\'),\',...]);
h_sub2=uimenu(h_menu,\'label\',\'grid off\',... \'callback\',[...\'grid off,\',...
\'set(h_sub2,\'\'checked\'\',\'\'on\'\'),\',...\'set(h_sub1,\'\'checked\'\',\'\'off\'\'),\',...]);
h_sub3=uimenu(h_menu,\'label\',\'box on\',\'callback\',\'box on\',...\'separator\',\'on\',\'Accelerator\',\'d\'); %
h_sub4=uimenu(h_menu,\'label\',\'box off\',\'callback\',\'box off\',\'Accelerator\',\'e\'); h_sub5=uimenu(h_menu,\'label\',\'Figure Color\',\'Separator\',\'on\'); % h_subsub1=uimenu(h_sub5,\'label\',\'Red\',\'ForeGroundColor\',\'r\',...% \'callback\',\',set(gcf,\'\'Color\'\',\'\'r\'\')\'); h_subsub2=uimenu(h_sub5,\'label\',\'Reset\',...\'callback\',\'set(gcf,\'\'Color\'\',BackColor)\',...\'Accelerator\',\'a\');