菜单的种类很多,包括下拉菜单、分组菜单、右键菜单等等,右键菜单与Window桌面上单击右键弹出的菜单效果一样,只是样式不同,菜单上的内容包括文字、单选框、按钮等。对于EXT来说,这些菜单的实现都非常简单。
我们可以在一个面板的顶端或底端放置一横排功能按钮,按下不同的按钮时会执行不同的操作。我们把这个横条称为工具条,放在工具条上的按钮称为菜单。本章将详细介绍EXT中工具栏和菜单的使用方法。
一、简单菜单
创建一个简单工具条的方法如下,注意的一点是HTML代码必须要有:<div id="toolbar"></div>
过程大致包括:先创建一个工具条,用工具条的render()函数把它渲染在DIV上,然后调用Toolbar的add函数,向Toolbar添加4个按钮,同时还可以添加单击处理事件。
- Ext.onReady(function(){
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:"新建N",
- handler:function(){
- Ext.Msg.alert('提示','新建');
- }
- },{
- text:"修改C"
- },{
- text:"删除"
- },{
- text:"显示"
- });
- });
效果如图1所示:

图1 简单的工具条
二、向菜单中添加分隔线
分隔线显示就是一条水平线,可以使用它将菜单中不同类型的菜单项分隔显示,Ext中向菜单中添加分隔线的方式有两种。
1、使用连字符或'separator'作为参数,如下面的代码所示:
- varmenu1=newExt.menu.Menu({
- items:[
- {text:'菜单一'},
- {text:'菜单二'}
- ]
- });
- menu1.add('separator');
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:'新建',
- menu:menu1
- });
2、用Ext.menu.Separator的实例作为参数,如下面的代码所示:
- menu1.add(newExt.menu.Separator());
具体效果如图2所示:

图2.1 无分隔线效果

图2.2 具有分隔线效果
三、多级菜单
下拉菜单可以嵌套,而且嵌套的层数似乎任意的,我们先来看一个两层结构的菜单,实现方法很简单,只要在下拉菜单中再加一个menu菜单参数并指定对应的下级菜单即可,如下面代码所示:
- varmenuHistory=newExt.menu.Menu({
- items:[
- {text:'今天'},
- {text:'昨天'},
- {text:'一周'},
- {text:'一年'}
- ]
- });
- varmenuFile=newExt.menu.Menu({
- items:[{
- text:'新建'
- },{
- text:'打开'
- },{
- text:'保存'
- },{
- text:'历史',menu:menuHistory
- },{
- text:'关闭'
- }]
- });
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:'文件',
- menu:menuFile
- });
实现效果图如下所示:

图3 两层结构的嵌套菜单
在上面的实例中,我们可以直接使用menu参数指定在菜单的哪个部分加上子菜单。利用这些方法,我们就可以轻易实现自己想要的功能菜单了。
四、高级菜单
除了上面提到的最基本的菜单按钮,EXT还为我们提供了一些功能比较复杂的菜单控件,供我们直接调用,本节将详细介绍这些高级菜单的使用方法和实例。
4.1 多选菜单和单选菜单
我们使用Ext.menu.CheckItem来创建多选菜单,text参数表示菜单上显示的文字,checked参数表示当前菜单项是否被选中.checkHandler用来指定选中菜单时执行的处理菜单.单选菜单也基本类似,具体使用代码如下:
- varmenuCheckbox=newExt.menu.Menu({
- items:[
- newExt.menu.CheckItem({
- text:'粗体',
- checked:true,
- checkHandler:function(item,checked){
- Ext.Msg.alert('多选',(checked?'选中':'取消')+'粗体');
- }
- }),
- newExt.menu.CheckItem({
- text:'斜体',
- checked:true,
- checkHandler:function(item,checked){
- Ext.Msg.alert('多选',(checked?'选中':'取消')+'斜体');
- }
- })
- ]
- })
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:'字体',
- menu:menuCheckbox
- });
效果图如图4所示

图4 多选菜单
4.2 时间菜单
EXT为我们提供了选择日期的菜单Ext.menu.DateMenu,它可以让我们直接把日期选择功能加入到菜单中,实现的代码如下:
- tb.add({
- text:'日期',
- menu:newExt.menu.DateMenu({
- handler:function(dp,date){
- Ext.Msg.alert('选择日期','你选择的日期是{0}.',date.format('Y年m月d日'));
- }
- })
- });
注意,这时Ext.menu.DateMenu时一个Menu而不是MenuItem,使用时应该用menu参数将它设置成上级菜单的子菜单。实现的效果图如图5所示。

图5 日期菜单
4.3 颜色菜单
EXT为我们提供了选择颜色的功能菜单Ext.menu.ColorMenu,效果图如图6所示。

图6 颜色菜单
颜色选择菜单虽然不常用,但它的效果十分绚丽,它的用法与日期菜单相似,也有特定的handler,如下面代码所示:
- tb.add({
- text:'颜色',
- menu:newExt.menu.ColorMenu({
- handler:function(cm,color){
- if(typeofcolor=='string'){
- Ext.Msg.alert('选择颜色','选择的颜色是'+color);
- }
- }
- })
- });
五、小结
本章主要介绍如何创建工具条和菜单,以及如何使用下拉菜单和分级菜单对我们需要的功能按钮进行分组显示,除此之外,还关于高级菜单进行了分析。至于分页控件Ext.PagingToolbar的使用方法在后面的章节会给出介绍。
菜单的种类很多,包括下拉菜单、分组菜单、右键菜单等等,右键菜单与Window桌面上单击右键弹出的菜单效果一样,只是样式不同,菜单上的内容包括文字、单选框、按钮等。对于EXT来说,这些菜单的实现都非常简单。
我们可以在一个面板的顶端或底端放置一横排功能按钮,按下不同的按钮时会执行不同的操作。我们把这个横条称为工具条,放在工具条上的按钮称为菜单。本章将详细介绍EXT中工具栏和菜单的使用方法。
一、简单菜单
创建一个简单工具条的方法如下,注意的一点是HTML代码必须要有:<div id="toolbar"></div>
过程大致包括:先创建一个工具条,用工具条的render()函数把它渲染在DIV上,然后调用Toolbar的add函数,向Toolbar添加4个按钮,同时还可以添加单击处理事件。
- Ext.onReady(function(){
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:"新建N",
- handler:function(){
- Ext.Msg.alert('提示','新建');
- }
- },{
- text:"修改C"
- },{
- text:"删除"
- },{
- text:"显示"
- });
- });
效果如图1所示:

图1 简单的工具条
二、向菜单中添加分隔线
分隔线显示就是一条水平线,可以使用它将菜单中不同类型的菜单项分隔显示,Ext中向菜单中添加分隔线的方式有两种。
1、使用连字符或'separator'作为参数,如下面的代码所示:
- varmenu1=newExt.menu.Menu({
- items:[
- {text:'菜单一'},
- {text:'菜单二'}
- ]
- });
- menu1.add('separator');
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:'新建',
- menu:menu1
- });
2、用Ext.menu.Separator的实例作为参数,如下面的代码所示:
- menu1.add(newExt.menu.Separator());
具体效果如图2所示:

图2.1 无分隔线效果

图2.2 具有分隔线效果
三、多级菜单
下拉菜单可以嵌套,而且嵌套的层数似乎任意的,我们先来看一个两层结构的菜单,实现方法很简单,只要在下拉菜单中再加一个menu菜单参数并指定对应的下级菜单即可,如下面代码所示:
- varmenuHistory=newExt.menu.Menu({
- items:[
- {text:'今天'},
- {text:'昨天'},
- {text:'一周'},
- {text:'一年'}
- ]
- });
- varmenuFile=newExt.menu.Menu({
- items:[{
- text:'新建'
- },{
- text:'打开'
- },{
- text:'保存'
- },{
- text:'历史',menu:menuHistory
- },{
- text:'关闭'
- }]
- });
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:'文件',
- menu:menuFile
- });
实现效果图如下所示:

图3 两层结构的嵌套菜单
在上面的实例中,我们可以直接使用menu参数指定在菜单的哪个部分加上子菜单。利用这些方法,我们就可以轻易实现自己想要的功能菜单了。
四、高级菜单
除了上面提到的最基本的菜单按钮,EXT还为我们提供了一些功能比较复杂的菜单控件,供我们直接调用,本节将详细介绍这些高级菜单的使用方法和实例。
4.1 多选菜单和单选菜单
我们使用Ext.menu.CheckItem来创建多选菜单,text参数表示菜单上显示的文字,checked参数表示当前菜单项是否被选中.checkHandler用来指定选中菜单时执行的处理菜单.单选菜单也基本类似,具体使用代码如下:
- varmenuCheckbox=newExt.menu.Menu({
- items:[
- newExt.menu.CheckItem({
- text:'粗体',
- checked:true,
- checkHandler:function(item,checked){
- Ext.Msg.alert('多选',(checked?'选中':'取消')+'粗体');
- }
- }),
- newExt.menu.CheckItem({
- text:'斜体',
- checked:true,
- checkHandler:function(item,checked){
- Ext.Msg.alert('多选',(checked?'选中':'取消')+'斜体');
- }
- })
- ]
- })
- vartb=newExt.Toolbar();
- tb.render('toolbar');
- tb.add({
- text:'字体',
- menu:menuCheckbox
- });
效果图如图4所示

图4 多选菜单
4.2 时间菜单
EXT为我们提供了选择日期的菜单Ext.menu.DateMenu,它可以让我们直接把日期选择功能加入到菜单中,实现的代码如下:
- tb.add({
- text:'日期',
- menu:newExt.menu.DateMenu({
- handler:function(dp,date){
- Ext.Msg.alert('选择日期','你选择的日期是{0}.',date.format('Y年m月d日'));
- }
- })
- });
注意,这时Ext.menu.DateMenu时一个Menu而不是MenuItem,使用时应该用menu参数将它设置成上级菜单的子菜单。实现的效果图如图5所示。

图5 日期菜单
4.3 颜色菜单
EXT为我们提供了选择颜色的功能菜单Ext.menu.ColorMenu,效果图如图6所示。

图6 颜色菜单
颜色选择菜单虽然不常用,但它的效果十分绚丽,它的用法与日期菜单相似,也有特定的handler,如下面代码所示:
- tb.add({
- text:'颜色',
- menu:newExt.menu.ColorMenu({
- handler:function(cm,color){
- if(typeofcolor=='string'){
- Ext.Msg.alert('选择颜色','选择的颜色是'+color);
- }
- }
- })
- });
五、小结
本章主要介绍如何创建工具条和菜单,以及如何使用下拉菜单和分级菜单对我们需要的功能按钮进行分组显示,除此之外,还关于高级菜单进行了分析。至于分页控件Ext.PagingToolbar的使用方法在后面的章节会给出介绍。
分享到:
相关推荐
EXTJS4自学手册——EXT基本方法、属性(onReady、define、create) EXTJS4自学手册——EXT基本方法、属性(apply、applyIf、constructor) EXTJS4自学手册——EXT基本方法、属性(mixins、statics、require) EXTJS...
总结,ExtJS工具栏和菜单系统提供了一种灵活的方式来构建丰富的用户界面,结合按钮、分隔线和多级菜单,可以创建出满足各种需求的交互式Web应用。通过理解这些基本概念和使用方法,开发者可以高效地构建出具有专业...
EXTJS4的菜单栏设计灵活,可自定义程度高,支持多级菜单、图标、分隔符等元素,为开发者提供了丰富的API和配置选项。 菜单栏在EXTJS4中的实现主要基于`Ext.menu.Menu`类。这个类提供了一个容器,可以容纳多个菜单项...
在EXTJS框架中,超级工具栏(Super Toolbar)是一种高度可定制的组件,它允许开发者在页面顶部创建一排或多排功能丰富的按钮、下拉菜单和分隔符,以实现各种用户交互操作。这些工具栏通常包含图标,使得用户能够快速...
在EXTJS开发中,按钮、菜单和工具栏是构建用户界面的关键元素,它们提供了丰富的交互性和可定制性。本章主要介绍EXTJS中关于这些元素的使用和配置。 1. Shortcuts(快捷方式) EXTJS提供了一系列的快捷方式来简化...
Extjs工具栏(Toolbar)和菜单(Menu)组件的学习笔记提供了丰富的知识点,帮助开发者在Web开发中实现类似桌面程序的用户界面。以下详细解析了Extjs在构建工具栏和菜单方面的关键知识点。 首先,Extjs是一个基于...
总之,通过巧妙地运用ExtJs的菜单和工具栏组件,开发者可以创建出既美观又实用的导航系统,无需依赖传统的左侧树形导航。这种设计方法不仅提高了界面的简洁度,还增强了用户体验,尤其适用于现代Web应用的需求。
7. **源码和工具** 博文链接提供的源码可能包含了完整的示例代码,供开发者参考和学习。这些源码可以帮助理解如何将上述概念应用到实际项目中。同时,ExtJS 4还提供了一些内置工具,如`Ext Designer`,用于可视化...
动态加载菜单是ExtJS中的一个关键特性,它允许在用户交互过程中动态地创建、修改和加载菜单项,提供了更灵活的用户界面设计。在“Extjs动态加载菜单”这个主题中,我们将深入探讨这一功能的实现方式以及相关技术。 ...
表格控件(Grid)是ExtJS的核心组件之一,其功能强大,包括列排序、数据缓存、拖放操作、列隐藏、行号显示、列汇总和单元格编辑等。创建一个基本的Grid,需要定义列模型(ColumnModel),其中包含了每一列的标题和...
在ExtJS4.0中,数据处理的关键是从传统的面向过程转向面向对象的方法,这主要体现在Model、Store和Proxy的使用上。Model作为数据模型,负责定义数据结构和业务逻辑,类似于实体类。例如,在C#或Java中,我们通常会...
7. **工具使用**:可能还涉及到使用到的开发工具,如ExtJS的IDE插件、调试工具以及版本控制工具等,以提升开发效率和代码质量。 学习并实践这个主题,开发者不仅能掌握ExtJS的基础知识,还能深入理解如何用它来构建...
1. 隐藏工具栏时,直接使用ExtJS提供的API,调用hide()方法即可隐藏工具栏,但这可能会造成布局上的问题。我们可以在隐藏工具栏的同时,将其高度设为零,从而避免留下空白。 2. 显示工具栏时,我们可以使用show()...
综上所述,《Extjs6示例中文版》不仅提供了详细的ExtJS6教程,还分享了作者的实践经验和个人见解,这对于想要深入学习和掌握ExtJS6的开发者来说是一份宝贵的资源。通过学习本书,读者不仅可以了解ExtJS6的基础知识和...
- **Core 包**:包含了一些核心类和工具函数,为其他模块提供支持。 - **Ext 类**:Ext 是 ExtJS 的核心类,提供了一系列静态方法,用于简化常见的开发任务,如创建组件、处理事件等。 #### 十、ExtJS 4.0 的 util ...
- 文档:解释插件的使用方法、API参考和配置选项。 在实际项目中,开发者需要根据自身需求调整日历插件的配置,例如设置默认视图、定制事件处理函数,或者通过API与其他组件交互。同时,考虑到性能和用户体验,优化...
ExtJS 4.2 Desktop 拓展是一个用于构建桌面样式的Web应用程序的框架,它提供了丰富的用户界面组件和交互效果。这个拓展是基于ExtJS 4.2版本,一个非常强大的JavaScript库,用于创建数据驱动、富客户端的Web应用。在...
EXTJS是一种基于JavaScript的前端开发框架,用于构建富互联网应用程序(RIA)。它提供了一系列组件,如表格、面板、菜单、窗口等,使开发者能够创建功能...掌握这些工具的使用方法,对于提升EXTJS开发效率至关重要。
2. **按钮(Button)的用法**:`EXTjs button用法.doc`将详细介绍如何创建和使用ExtJS 4的按钮组件,包括设置按钮文本、图标、事件监听器以及使用不同类型的按钮,如工具栏按钮、菜单按钮等。 3. **表单(Form)...
综上所述,ExtJS6的下拉列表(ComboBox)和GridCombo扩展控件提供了强大的功能和灵活性,它们可以用于创建丰富的用户界面,满足各种复杂的业务需求。理解和熟练掌握这些组件的使用,对于开发高质量的Web应用至关重要...