简单菜单
//
创建工具条
var
tb
=
new
Ext.Toolbar();
tb.render('toolbar');
![]()
//
为工具条添加按钮
![]()
tb.add(
{
text:'新建',
//对应的事件处理函数
![]()
handler:function()
{
alert('提示', '新建');
}
![]()
}
,
{
text:'修改'
}
);
向菜单添加分隔线也有两种方法:
menuFile.add('-') menuFile.add('separator')
menuFile.add(new Ext.menu.Separator())
多级菜单
下拉多级菜单就是工具条上添加一个嵌套菜单的菜单,如:
高级菜单
下列示例展现了多选菜单和单选菜单,两者唯一不同的是group参数。
如果菜单中需要添加日期,则如下:
颜色选择菜单虽然并不常用,但有时却必须:
Ext.menu.Adapter菜单适配器
如果我们在菜单中需要添加一个表单,则有两种方法:
![]()
方法一:直接创建Ext.menu.Adapter的实例
hideOnClick:true的功能是在鼠标单击菜单中的表单时,菜单不会自动隐藏。
第二种方式是定义继承Ext.menu.Adapter的子类
config = config || {};这条语句负责检测config参数是否为空,如果不为空,config依然等于原值,否则设置为空对象。
在保证config不为空后,使用Ext.applyIf()函数为一些参数设置初始值。
使用Ext.menu.MenuMgr统一管理菜单
Ext为我们提供了MenuMgr来统一管理页面上所有的菜单。每创建一个菜单都会自动注册到Ext.menu.MenuMgr中,可以使用Ext.menu.MenuMgr提供的函数对菜单进行操作。Ext.menu.MenuMgr是一个单例,我们不必创建它的实例就可以直接调用它的功能函数get(),根据id获得对应的菜单。



向菜单添加分隔线也有两种方法:
menuFile.add('-') menuFile.add('separator')
menuFile.add(new Ext.menu.Separator())
多级菜单
下拉多级菜单就是工具条上添加一个嵌套菜单的菜单,如:
1
var
menuhistory
=
new
Ext.menu.Menu(
{
2
items:[
3![]()
{text:'今天'},
4![]()
{text:'昨天'},
5![]()
{text:'一周'},
6![]()
{text:'一月'}
7
]
8
}
);
9![]()
10![]()
var
menu1
=
new
Ext.menu.Menu(
{
11
items:[
12![]()
{text:'新建'},
13![]()
{text:'打开'},
14![]()
{text:'保存'},
15![]()
{text:'另存
'},
16
'-',
17![]()
{text:'历史',menu:menuhistroy},
18
'-',
19![]()
{text:'关闭'}
20
]
21
}
);
22![]()
23
var
tb
=
new
Ext.Toolbar();
24
tb.render('toolbar');
25![]()
26![]()
tb.add(
{
27
text:'文件',
28
menu:menu1
29
}
);
30

2
3

4

5

6

7
8
9
10

11
12

13

14

15


16
17

18
19

20
21
22
23
24
25
26

27
28
29
30
高级菜单
下列示例展现了多选菜单和单选菜单,两者唯一不同的是group参数。
1
var
menuCheckbox
=
new
Ext.menu.Menu(
{
2
items:[
3![]()
new Ext.menu.CheckItem(
{
4
text:'粗体',
5
checked:true,
6![]()
checkHandler:function(item,checked)
{
7
Ext.Msg.alert('多选',(checked?'选中':'取消') + '粗体');
8
}
9
}),
10![]()
new Ext.menu.CheckItem(
{
11
text:'斜体',
12
checked:true,
13![]()
checkHandler:function(item,checked)
{
14
Ext.Msg.alert('多选',(checked?'选中':'取消') + '斜体');
15
}
16
})
17
]
18
}
);
19![]()
20![]()
var
menuRadio
=
new
Ext.menu.Menu(
{
21
items:[
22![]()
new Ext.menu.CheckItem(
{
23
text:'宋体',
24
group:'font',
25
checked:true,
26![]()
checkHandler:function(item,checked)
{
27
Ext.Msg.alert('多选',(checked?'选中':'取消') + '宋体');
28
}
29
}),
30![]()
new Ext.menu.CheckItem(
{
31
text:'楷体',
32
group:'font',
33
checked:true,
34![]()
checkHandler:function(item,checked)
{
35
Ext.Msg.alert('多选',(checked?'选中':'取消') + '楷体');
36
}
37
}),
38![]()
new Ext.menu.CheckItem(
{
39
text:'黑体',
40
group:'font',
41![]()
checkHandler:function(item,checked)
{
42
Ext.Msg.alert('多选',(checked?'选中':'取消') + '黑体');
43
}
44
})
45
]
46
}
);
47![]()
48
var
tb
=
new
Ext.Toolbar();
49
tb.render('toolbar');
50![]()
51![]()
tb.add(
{
52
text:'多选',
53
menu:menuCheckbox
54![]()
}
,
{
55
text:'单选',
56
menu:menuRadio
57
}
)
58
});

2
3

4
5
6

7
8
9
10

11
12
13

14
15
16
17
18
19
20

21
22

23
24
25
26

27
28
29
30

31
32
33
34

35
36
37
38

39
40
41

42
43
44
45
46
47
48
49
50
51

52
53
54

55
56
57
58
如果菜单中需要添加日期,则如下:
1
tb.add(
{
2
text:'日期',
3![]()
menu:new Ext.menu.DateMenu(
{
4![]()
handler:function(dp,date)
{
5![]()
Ext.Msg.alert('选择日期','选择的日期是
{0}',date.format('Y年m月d日'));
6
}
7
})
8
}
);

2
3

4

5

6
7
8
颜色选择菜单虽然并不常用,但有时却必须:
1
tb.add(
{
2
text:'颜色',
3![]()
menu:new Ext.menu.ColorMenu(
{
4![]()
handler:function(cm,color)
{
5
if (typeof color == 'string')
6![]()
{
7
Ext.Msg.alert('选择颜色','选择的颜色是' + color);
8
}
9
10
}
11
})
12
}
);

2
3

4

5
6

7
8
9
10
11
12
Ext.menu.Adapter菜单适配器
如果我们在菜单中需要添加一个表单,则有两种方法:
方法一:直接创建Ext.menu.Adapter的实例
1
var
form
=
new
Ext.form.FormPanel(
{
2
title:'输入',
3
frame:true,
4
defaultType:'textfield',
5
labelWidth:50,
6![]()
items:[
{
7
fieldLabel:'名称',
8
name:'name'
9
}],
10![]()
buttons:[
{
11
text:'确认'
12![]()
},
{
13
text:'取消'
14
}]
15
}
);
16![]()
17![]()
var
formItem
=
new
Ext.menu.Adapter(form,
{
18
hideOnClick:false
19
}
);
20![]()
21
var
tb
=
new
Ext.Toolbar();
22
tb.render('toolbar');
23![]()
24![]()
tb.add(
{
25
text:'表单菜单',
26![]()
menu:new Ext.menu.Menu(
{items:[formItem]})
27
}
);
28![]()
29

2
3
4
5
6

7
8
9
10

11
12

13
14
15
16
17

18
19
20
21
22
23
24

25
26

27
28
29
hideOnClick:true的功能是在鼠标单击菜单中的表单时,菜单不会自动隐藏。
第二种方式是定义继承Ext.menu.Adapter的子类
1
Ext.ux.FormMenuItem
=
function
(config)
{
2![]()
config = config ||
{};
3![]()
Ext.applyIf(config,
{
4
hideOnClick:false
5
})
6![]()
var form = new Ext.form.FormPanel(
{
7
title:'输入',
8
frame:true,
9
defaultType:'textfield',
10
labelWidth:50,
11![]()
items:[
{
12
fieldLabel:'名称',
13
name:'name'
14
}],
15![]()
buttons:[
{
16
text:'确认'
17![]()
},
{
18
text:'取消'
19
}]
20
});
21
Ext.ux.FormMenuItem.superclass.constructor.call(this,form,config);
22
}
23
Ext.extend(Ext.ux.FormMenuItem,Ext.menu.Adapter);
24![]()
25
var
tb
=
new
Ext.Toolbar();
26
tb.render('toolbar');
27![]()
28![]()
tb.add(
{
29
text:'表单菜单',
30![]()
menu:new Ext.menu.Menu(
{items:[new Ext.ux.FormMenuItem()]})
31
}
);
32

2

3

4
5
6

7
8
9
10
11

12
13
14
15

16
17

18
19
20
21
22
23
24
25
26
27
28

29
30

31
32
config = config || {};这条语句负责检测config参数是否为空,如果不为空,config依然等于原值,否则设置为空对象。
在保证config不为空后,使用Ext.applyIf()函数为一些参数设置初始值。
使用Ext.menu.MenuMgr统一管理菜单
Ext为我们提供了MenuMgr来统一管理页面上所有的菜单。每创建一个菜单都会自动注册到Ext.menu.MenuMgr中,可以使用Ext.menu.MenuMgr提供的函数对菜单进行操作。Ext.menu.MenuMgr是一个单例,我们不必创建它的实例就可以直接调用它的功能函数get(),根据id获得对应的菜单。