Matlab 界面菜单(uimenu)
11.3 界面菜单(uimenu)
11.3.1 图形窗的标准菜单
【例 11.3.1 -1 】本例说明:如何隐藏和恢复标准菜单的显示。
(1)获得缺省设置的标准菜单
figure
(2)隐去标准菜单的两种方法
set(H_fig , 'MenuBar','none') ;
set(gcf,'menubar',menubar);
(3)恢复图形窗上标准菜单
set(gcf,'menubar','figure');
|
图 11.3.1 -1 含有菜单条的图形窗 |
图 11.3.1 -2 移去菜单条的图形窗 |
11.3.2 自制的用户菜单
【 * 例 11.3.2-1 】本例演示:如何自制一个带下拉菜单表的用户菜单(如图 11.3.2-1 所示)。该菜单能使图形窗背景颜色设置为兰色或红色。
figure % 创建一个图形窗
h_menu=uimenu(gcf, 'label' , 'Color' ); % 制作用户顶层菜单项 Color <2>
h_submenu1=uimenu(h_menu, 'label' , 'Blue' , ... % 制作下拉菜单项 Blue <3>
'callback' , 'set(gcf,''Color'',''blue'')' ); %<4>
h_submenu2=uimenu(h_menu, 'label' , 'Red' , ... % 制作下拉菜单 Red <5>
'callback' , 'set(gcf,''Color'',''red'')' ); %<6>
图 11.3.2-1 创建用户菜单示例
11.3.3 用户菜单的属性
11.3.3.1 回调属性和菜单名
【 * 例 11.3.3.1-1 】本例的目标
:在图形窗上自制一个名为【 Test 】的“顶层菜单项”;当用鼠标点动该菜单项时,将产生一个带分格的封闭坐标轴。通过本例说明:
(A)回调属性的运作机理;
(B)用户顶层菜单项的制作
(C) uimenu 属性的设置方法;
(D)复杂字符串的构成方法和注意事项。
(1)在 MATLAB 指令窗中运行以下程序可产生带分格的封闭坐标轴(见图 11.3.3.1-1 )
grid on,set(gca,'box','on')
图 11.3.3.1-1 带分格的封闭坐标轴
(2)在 MATLAB 指令窗中用以下 eval 指令可产生与图 11.3.3.1-1 相同的界面
eval('grid on,set(gca,''box'',''on'')')
(3) 产生 图 11.3.3.1-2 界面的 uimenu 的书写格式一:直接连续表示法
uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),')
图 11.3.3.1-2 通过顶层菜单 Test 形成的带分格的封闭坐标轴
(4)产生 图 11.3.3.1-2 界面的 uimenu 的书写格式二:方括号续行号表示法
uimenu('Label','Test', ...
'Callback',['grid on,' , ...
'set(gca,''box'',''on'');'])
(5)产生 图 11.3.3.1-2 界面的 uimenu 的书写格式三:串变量法
Lpv='Test';
Cpv=['grid on,','set(gca,''box'',''on''),'];
uimenu('Label', Lpv, 'Callback' , Cpv)
(6)产生 图 11.3.3.1-2 界面的 uimenu 的书写格式四:构架表示法
PS.Label='Test';
PS.Callback=['grid on;','set(gca,''box'',''on'');'];
uimenu(PS)
11.3.3.2 设置简捷键或快捷键
【 * 例 11.3.3.2-1 】本例目标:使图 11.3.2-1 所示菜单成为图 11.3.3.2-1 那样, Color 菜单项及其下拉的 Blue 菜单各带一个简捷键,而另一项下拉菜单 Red 带一个快捷键。
[exm11332_1.m]
figure
h_menu=uimenu(gcf, 'Label' , '&Color' ); % 带简捷键 C 的用户菜单 Color <2>
h_submenu1=uimenu(h_menu, 'Label' , '&Blue' , ... % 带简捷键 B 的的下拉菜单 Blue <3>
'Callback' , 'set(gcf,''color'',''blue'')' );
h_submenu2=uimenu(h_menu, 'label' , 'Red' , ... % 制作另一个下拉菜单 Red
'Callback' , 'set(gcf,''color'',''red'')' , ...
'Accelerator' , 'r' ); % 为 Red 菜单设置快捷键 R <7>
图 11.3.3.2-1 为用户菜单设置快捷键
11.3.3.3 用户菜单的外观设计
【 * 例 11.3.3.3-1 】本例演示:
(A)把用户菜单 'Option' 设置为顶层的第3菜单项;
(B)下拉菜单被两条分隔线分为三个菜单区;
(C)最下菜单项又有两个子菜单组成。
(1)编写程序,生成如图 11.3.3.3-1 所示界面
[exm11333_1.m]
figure
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' ); %<6>
h_sub4=uimenu(h_menu, 'label' , 'box off' , 'callback' , 'box off' );
h_sub5=uimenu(h_menu, 'label' , 'Figure Color' , 'Separator' , 'on' ); %<8>
h_subsub1=uimenu(h_sub5, 'label' , 'Red' , 'ForeGroundColor' , 'r' , ... %<9>
'callback' , 'set(gcf,''Color'',''r'')' );
h_subsub2=uimenu(h_sub5, 'label' , 'Reset' , ...
'callback' , 'set(gcf,''Color'',''w'')' );
图 11.3.3.3-1
(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
【 * 例 11.3.3.3-2 】本例演示:当某菜单项选中后,如何使该菜单项贴上检录符“ √”。
[exm11333_2.m]
figure
h_menu=uimenu( 'label' , 'Option' );
h_sub1=uimenu(h_menu, 'label' , 'Grid on' , ... %<3>
'callback' ,[ ...
'grid on,' , ...
'set(h_sub1,''checked'',''on''),' , ...
'set(h_sub2,''checked'',''off''),' , ...
]);
h_sub2=uimenu(h_menu, 'label' , 'Grid off' , ... %<4>
'callback' ,[ ...
'grid off,' , ...
'set(h_sub2,''checked'',''on''),' , ...
'set(h_sub1,''checked'',''off''),' , ...
]);
图 11.3.3.3-2 Grid on 菜单选中后出现检录符
11.3.3.4 使能(Enable)与可见性(Visible)属性
【 * 例 11.3.3.4-1 】 本例目标:制作一个带四个子菜单项的顶层菜单项;该下拉菜单分为两个功能区;每个功能区的两个菜单项是相互对立的,因此采用使能属性处理;当图形窗坐标轴消隐时,整个坐标分隔控制功能区不可见。
(1)编写如下脚本 M 文件 exm11334_1.m
[exm113

您当前的位置: