`
endual
  • 浏览: 3567516 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

extjs 菜单栏使用(转)

 
阅读更多

 

Ext系列之菜单栏和工具栏

分类: Javascript 1668人阅读 评论(0) 收藏 举报

菜单栏和工具栏是经常用的,今天大家一块看看Ext中的菜单和工具如何使用吧!

先看下面的代码,貌似有点长,不过注释很清楚,而且下面我会逐一去解释:

 

 

[javascript] view plaincopy
  1. <html>  
  2.     <head>  
  3.         <link href="ext/resources/css/ext-all.css" mce_href="ext/resources/css/ext-all.css" rel="stylesheet" type="text/css" />  
  4.         <mce:script src="ext/adapter/ext/ext-base.js" mce_src="ext/adapter/ext/ext-base.js" type="text/javascript"></mce:script>  
  5.         <mce:script src="ext/ext-all.js" mce_src="ext/ext-all.js" type="text/javascript"></mce:script>  
  6.         <mce:script type="text/javascript"><!--  
  7.             Ext.onReady(function(){  
  8.                 var mnFile=new Ext.menu.Menu({//定义一工具栏一个按钮的下拉列表Menu(注意这个item中有点乱,主要为了让大家多看几种形式)  
  9.                     id:'mnFile',  
  10.                     items:[   
  11.                         {  
  12.                             text:'新建',  
  13.                             icon:'ext/docs/resources/favicon.ico',//设置菜单前面图标  
  14.                             handler:function(){  
  15.                                 Ext.Msg.alert("系统提示","您单击了‘新建’");  
  16.                             }  
  17.                         },  
  18.                         new Ext.menu.Item({  
  19.                             text:'打开'  
  20.                         })  
  21.                     ]  
  22.                 });  
  23.                   
  24.                 var mnSystem=new Ext.menu.Menu({//第二个Menu列表,这里看一下二级菜单  
  25.                     id:'mnSystem',  
  26.                     items:[   
  27.                         new Ext.menu.Item({  
  28.                             text:'设置',  
  29.                             menu:[  
  30.                                     {text:'皮肤', menu:new Ext.menu.ColorMenu({handler:function(cm,color){  
  31.                                         Ext.Msg.alert("系统消息","您选择的颜色:"+color);  
  32.                                     }})},  
  33.                                     {text:'日期',menu:new Ext.menu.DateMenu({handler:function(dp,date){  
  34.                                         Ext.Msg.alert("系统消息",date.format("您选择的日期是:Y年m月d日"));  
  35.                                     }})},  
  36.                                     new Ext.menu.Separator(),//创建分隔符  
  37.                                     new Ext.menu.Item({//三级菜单  
  38.                                         text:'语言',  
  39.                                         menu:[  
  40.                                             new Ext.menu.CheckItem({text:"中文",group:"language"}),   
  41.                                             new Ext.menu.CheckItem({text:"English",group:"language"})  
  42.                                         ]  
  43.                                     }),  
  44.                                     'separator'//这样也可以添加分隔符  
  45.                                     new Ext.menu.Item({//注意和上面的区别就是这个没有group,所以就显示为了多选框  
  46.                                         text:'字体类型',  
  47.                                         menu:[  
  48.                                             new Ext.menu.CheckItem({text:"斜体"}),   
  49.                                             new Ext.menu.CheckItem({text:"加粗"}),   
  50.                                             new Ext.menu.CheckItem({text:"下划线"})  
  51.                                         ]  
  52.                                     }),  
  53.                                     '-'//同样可以创建分隔符  
  54.                                       
  55.                             ]  
  56.                         }),  
  57.                     ]  
  58.                 });  
  59.                 var btnFile=new Ext.Button({  
  60.                     text:'文件',  
  61.                     menu:mnFile  
  62.                 });  
  63.                 var btnSystem=new Ext.Button({  
  64.                     text:'系统',  
  65.                     menu:mnSystem  
  66.                 });  
  67.                 var tb=new Ext.Toolbar({  
  68.                     id:'tb',  
  69.                     width:'auto',  
  70.                     height:30,  
  71.                     items:[  
  72.                         btnFile,  
  73.                         btnSystem  
  74.                     ]  
  75.                 });  
  76.                 tb.render(Ext.getBody());  
  77.                       
  78.             });  
  79.           
  80. // --></mce:script>  
  81.         <mce:style type="text/css"><!--  
  82.             .item{  
  83.                 padding-left:10px,  
  84.                 color:red  
  85.             }  
  86.           
  87. --></mce:style><style type="text/css" mce_bogus="1">         .item{  
  88.                 padding-left:10px,  
  89.                 color:red  
  90.             }  
  91.         </style>  
  92.     </head>  
  93.     <body>  
  94.         <div id="divMenu"></div>  
  95.     </body>  
  96. </html>  

 

 

上面我方了完整的代码,有相应的ext库的话可以直接运行,下面我们逐一看一下相关内容。

Ext中的Menu很容易使用,但是对于没有用过的初学者往往有一个误区就是认为声明一个Menu对象(例如上面的mnFile)就可以直接放到工具栏上(例如上面的tb),其实是不对的,通过代码我们看到Menu对象是放在一个button中再将button放到Toolbar上面的;Ext中有几类Menu的Item类型,上面我将常用的都列出来了(还有就是自定义和baseItem这里就不再说了),其他都好说也容易理解,但是注意DateMenu和ColorMenu的使用,并不是直接作为一个menu(注意这里是小写的menu)中使用的而是放到一个Menu的item中使用的(这一点是很合理的,因为总不能直接在menu中出现一个color选框吧,总要点一个类似按钮的东西弹出来才好用啊);然后就是对于CheckItem是单选还是多选我上面已经注释了,想要单选的话就在同一组中标记相同的group就可以了;还有就是初学者会被menu嵌套中item和最后提一下啊就是Ext中经常用到分隔符,我上面已经将三种使用方式都列出来了,不过大家不要错误理解分隔符,不仅仅是纵向分割,想工具条上的多个横排按钮的分割也是如此。

关于Toolbar我再多说两句,请看下面的例子:

 

[javascript] view plaincopy
  1. Ext.onReady(function(){  
  2.     var tb=new Ext.Toolbar({  
  3.         id:'tb',  
  4.         renderTo:'divToolbar',  
  5.         autoWidth:true,  
  6.         autoHeight:true,  
  7.         items:[  
  8.             '查询条件:',  
  9.             new Ext.form.Field({  
  10.                   
  11.             }),  
  12.             '',  
  13.             {  
  14.                 xtype:'button',  
  15.                 text:'搜索',  
  16.                 iconCls:'btn_search'  
  17.             },  
  18.             '->',//  
  19.             '<b>其他功能:</b>',  
  20.             new Ext.Button({  
  21.                 text:'导出Excel'  
  22.             }),  
  23.             '-',  
  24.             {  
  25.                 text:'导出word'  
  26.             }  
  27.         ]  
  28.     });  
  29.           
  30. });  

 

对于toolbar中的元素并非什么都可以,这个可以查看相关文档,当时相信通过上面和下面的例子已经将常用的元素都列出来了(当然像DateField这些我们没有列举)。对于toolbar有时候我们还这样来添加元素(为了使代码清晰,很多部分都是和上面对应的,例如上面的string文本和addText就是对应的):

 

[javascript] view plaincopy
  1. var tb=new Ext.Toolbar({  
  2.     id:'tb',  
  3.     renderTo:'divToolbar',  
  4.     autoWidth:true,  
  5.     autoHeight:true  
  6. });  
  7. tb.addText("查询条件:");  
  8. tb.addField(new Ext.form.TextField({name:'tf'}));//addField方法可以添加大部分form控件  
  9. tb.addSpacer();  
  10. tb.addButton({text:'搜索',iconCls:'btn_search'});  
  11. tb.addFill();  
  12. tb.addElement('divHtml');//参数就是一个html元素的id                
  13. tb.add(new Ext.Button({text:'导出Excel'}));  
  14. tb.addSeparator();  
  15. tb.add(new Ext.Button({text:'导出Word'}));  
  16. tb.add(new Ext.SplitButton({  
  17.     text:'帮助',  
  18.     arrorTooltip:'更多',  
  19.     menu:new Ext.menu.Menu({  
  20.         items:[  
  21.             {  
  22.                 text:'升级'  
  23.             },  
  24.             {  
  25.                 text:'关于'  
  26.             }  
  27.         ]     
  28.     })  
  29. }))  
  30. tb.addDom({tag:'i',html:'版权'});  
  31. tb.add('<b>copyright by cmjstudio<b>');  
  32. tb.doLayout();//重新布局,否则可以去掉tb中renderTo在这里写tb.render('divToolbar');不然是看不到上面的布局元素的  

 

注意:在Ext中一般给容器添加item时,可以使用其对应的add方法;也可以直接在构造函数中写(这一般有两种,我们在前面也说过,要么是只有主体的类[也就是只有{…}]里面可以指明xtype,要么是匿名的对象也[就是直接new XXX({})])。当然值得说明的是对于直接写在构造函数中只有主体的情况一般不指明xtype对于不同父容器也有默认的类型,除此之外有些特殊的情况(例如分隔符和toolbar的stringitem)也可以值写一个string类型的文本用引号引起来作为item。


题外话:在此再说一下,我会尽量将更多的东西放进来然后尽可能组织的有条理,例如有时候你可能看到有的相似的组件我们一个配置属性特别多而且很多注释,而有的却又属性很少又没有注释。那是因为我觉得我们只需要学会一个其他就会了,既然是学习没必要相同的东西都列出来,这样的话反而有时候不利于学习。

分享到:
评论

相关推荐

    EXTJS4 菜单栏

    EXTJS4的菜单栏设计灵活,可自定义程度高,支持多级菜单、图标、分隔符等元素,为开发者提供了丰富的API和配置选项。 菜单栏在EXTJS4中的实现主要基于`Ext.menu.Menu`类。这个类提供了一个容器,可以容纳多个菜单项...

    ExtJs菜单导航功能,不在用左边功能树

    "ExtJs菜单导航功能,不在用左边功能树"这一主题,旨在探讨如何在不使用左侧树形结构的情况下,利用ExtJs实现高效且现代感的菜单导航。 ExtJs是一款强大的JavaScript库,专门用于构建富客户端应用。它提供了丰富的...

    ExtJS工具栏

    总结,ExtJS工具栏和菜单系统提供了一种灵活的方式来构建丰富的用户界面,结合按钮、分隔线和多级菜单,可以创建出满足各种需求的交互式Web应用。通过理解这些基本概念和使用方法,开发者可以高效地构建出具有专业...

    extjs4 导航菜单实例

    这篇博客文章“extjs4 导航菜单实例”将深入探讨如何在ExtJS 4中创建和使用导航菜单,这对于构建具有层次结构和动态功能的用户界面至关重要。 在ExtJS中,导航菜单通常通过`Ext.menu.Menu`类来实现,这是一个可弹出...

    extjs上方动态导航栏

    在ExtJS中,上方的动态导航栏(通常称为Header或Toolbar)是一种常见的组件,用于展示应用的菜单、按钮、下拉框等交互元素,用户可以根据需求动态加载和更新。本篇文章将深入探讨如何在ExtJS中创建并实现上方动态...

    Extjs4使用要点个人整理

    2. **按钮(Button)的用法**:`EXTjs button用法.doc`将详细介绍如何创建和使用ExtJS 4的按钮组件,包括设置按钮文本、图标、事件监听器以及使用不同类型的按钮,如工具栏按钮、菜单按钮等。 3. **表单(Form)...

    extjs 3.1 组件 使用

    它提供了丰富的组件库,包括表格、表单、菜单、工具栏、树形结构等,使得开发者能够轻松创建复杂的用户界面。在本篇文章中,我们将深入探讨如何在实际项目中使用ExtJS 3.1的组件。 首先,`css`目录包含了ExtJS 3.1...

    Extjs 超级工具栏图标

    在EXTJS框架中,超级工具栏(Super Toolbar)是一种高度可定制的组件,它允许开发者在页面顶部创建一排或多排功能丰富的按钮、下拉菜单和分隔符,以实现各种用户交互操作。这些工具栏通常包含图标,使得用户能够快速...

    ExtJS静态使用示例

    库中的核心组件包括窗口、表单、菜单、工具栏、面板、树形结构、数据网格等。 2. **Grid的使用**:ExtJS的数据网格(Grid)组件是一个强大的表格展示工具,可以用来展示大量结构化的数据。它支持分页、排序、过滤、...

    Extjs4.1.1

    第三讲.ExtJS工具栏、菜单栏 第四讲.ExtJS最常用的表单之textfield控件 第五讲.ExtJs最常用表单组件Number、CheckBox、Radio 第六讲.ExtJs最常用表单组件ComboBox、time、date 第七讲.ExtJS面板Panel 第八讲....

    Extjs 2.2 Extjs 3.21 js

    它提供了丰富的组件库,包括网格、表单、菜单、工具栏等,使得开发者能够快速构建复杂的用户界面。此外,ExtJS 2.2也支持了CSS皮肤,允许开发者自定义UI样式,以满足各种设计需求。 接下来,我们讨论ExtJS 3.2.1。...

    ExtJs部署及使用方法

    ### ExtJs部署及使用方法详解 #### 一、ExtJs部署与配置 ##### 1.1 ExtJs库的安装 为了正确地安装ExtJs库,首先需要将ExtJs的源码包放置到项目的WebRoot目录下,即项目的根目录。在安装过程中,需要创建以下...

    extjs图标大全extjs图标大全extjs图标大全extjs图标大全

    在“已裁剪好”的描述中,我们可以理解到这些图标是预先处理过的,大小和比例适中,可以直接用于ExtJS的组件,如按钮、菜单项、工具栏等。这为开发者节省了大量时间,因为他们不需要花费精力去调整图标的尺寸或比例...

    extjs4.2 desktop mvc

    7. **Desktop环境**:EXTJS 4.2 Desktop MVC 提供了一个仿桌面的界面,包括任务栏、启动菜单、窗口最大化/最小化/关闭等功能,使得Web应用的用户体验更加接近于桌面应用。 8. **性能优化**:EXTJS 4.2在性能方面...

    extjs icon小图标

    这些图标可以用于按钮、菜单项、工具栏等各种组件,帮助用户识别和理解应用的功能。 在你提到的"extjs icon小图标"资源中,包含了一万个小图标,这为开发者提供了大量的选择,以满足不同设计需求。这些图标可能涵盖...

    extjs仿桌面系统

    在仿桌面系统中,可能需要使用如"fit"布局来填充整个屏幕,或者使用"border"布局来实现类似Windows任务栏的效果。同时,EXTJS还支持自定义布局,允许开发者根据需求定制特定的组件布局。 数据管理是EXTJS的另一大...

    深入浅出Extjs4.1.1

    3、ExtJS工具栏、菜单栏0 Q' y0 E. y E 4、ExtJS最常用的表单之textfield控件4 |4 ]8 ~/ d3 Y& k# X 5、ExtJs最常用表单组件Number、CheckBox、Radio* s, r% ~+ k; y# W 6、ExtJs最常用表单组件ComboBox、time、date...

    Extjs学习笔记之四 工具栏和菜单

    Extjs工具栏(Toolbar)和菜单(Menu)组件的学习笔记提供了丰富的知识点,帮助开发者在Web开发中实现类似桌面程序的用户界面。以下详细解析了Extjs在构建工具栏和菜单方面的关键知识点。 首先,Extjs是一个基于...

    ExtJs2.0学习系列

    工具栏(Toolbar)和菜单(Menu)在用户界面中起到辅助操作的作用。学习如何创建和定制这些元素,可以提供丰富的交互功能,如按钮、下拉菜单、分隔符等。 八、拖放功能 ExtJS 2.0支持拖放操作,允许用户通过鼠标...

    extjs3.3 中文文档

    7. **工具栏和菜单**:EXTJS提供创建工具栏和下拉菜单的功能,这些元素常用于提供用户交互。 8. **拖放功能**:EXTJS 3.3支持拖放操作,允许用户将组件拖动到不同的位置,或者在组件之间拖放数据。 9. **国际化和...

Global site tag (gtag.js) - Google Analytics