`

工具栏ToolBar和菜单栏Menu入门

阅读更多
一:Ext.toolbar.ToolBar是工具栏的基础组件,相当于容器,在其中可以放置各种工具栏元素:按钮、文字和菜单组件。
Eg:
//简单的工具栏
       var toolbar=new Ext.toolbar.Toolbar({
        renderTo:'toolbar',
        width:300
       });
       //向工具栏中添加按钮(添加了新建、打开、保存三个菜单按钮)
       toolbar.add([
       {
         text:'新建',//按钮上的文字
         handler:onButtonClick,//单击按钮的处理函数
         iconCls:'newIcon'//在按钮上显示的图标   
       },
       { text:'打开',handler:onButtonClick,iconCls:'openIcon'},
       { text:'保存',handler:onButtonClick,iconCls:'saveIcon'}
       ]);
       function onButtonClick(btn){//点击按钮时调用的处理函数
        alert(btn.text);
       }
复杂的工具栏:
       //复杂的工具栏
       var toolbar=new Ext.toolbar.Toolbar({
        renderTo:'toolbar',
        width:500
       });
       //向工具栏中添加按钮(添加了新建、打开、保存三个菜单按钮)
       toolbar.add([
       {text:'新建'},{text:'打开'},{text:'编辑'},{text:'保存'},
       '-',//创建一个工具栏分割元素
       {//加入表单元素
        xtype:'textfield',
        hideLabel:true,
        width:150
       },
       '->',//创建一个充满工具栏的空白元素
       '<a href=#>超链接</a>',
       {xtype:'tbspacer',width:50},//加入一个空白元素,宽度为50像素
       '静态文本'//加入一个简单的字符串
       ]);
//复杂的工具栏
       var toolbar=new Ext.toolbar.Toolbar({
        renderTo:'toolbar',
        width:500,
        items:[{
         text:'新建',
         handler:onButtonClick//点击按钮的处理函数
        },
        {text:'打开', handler:onButtonClick},
        {text:'保存', handler:onButtonClick},
        ]
       });
       function onButtonClick(btn){//点击按钮时调用的处理函数
        alert(btn.text);//显示按钮上的文字
       }
       Ext.get('enableBtn').on('click',function(){
        toolbar.enable();//启用工具栏
       });
       Ext.get('disableBtn').on('click',function(){
        toolbar.disable();//禁用工具栏
       });
二:菜单栏
  Ext.menu.Menu菜单:菜单项的容器,在菜单组件中,可以容纳Ext.menu.Item菜单项也可以容纳普通组件。
//多级菜单       
var toolbar = new Ext.toolbar.Toolbar({
renderTo : 'toolbar',
width : 300
});
var infoMenu = new Ext.menu.Menu({//一级菜单
ignoreParentClicks : true,//忽略父菜单的单击事件
plain : true,//是否移除菜单左侧的竖线
items : [ {
text : '个人信息',
menu : new Ext.menu.Menu({//二级菜单
ignoreParentClicks : true,//忽略父菜单的单击事件
items : [ {
text : '基本信息',
menu : new Ext.menu.Menu({//三级菜单
items : [ {
text : '身高',
handler : onMenuItem
}, {
text : '体重',
handler : onMenuItem
} ]
})
} ]
})
}, {
text : '公司信息'
} ]
});

toolbar.add({
text : '设置',
menu : infoMenu
});//将菜单加入工具栏
function onMenuItem(item) {
alert(item.text);//获取菜单项的text属性
}

//带选择框的菜单实例
var themeMenu = new Ext.menu.Menu({//文件创建菜单
items : [ {
text : '主体颜色',
menu : new Ext.menu.Menu({
items : [ {
text : '红色主题',
checked : true,//初始为选中状态
group : 'theme',//为单选项进行分组
checkHandler : onItemCheck
}, {
text : '蓝色颜色',
checked : false,
group : 'theme',//为单选项进行分组
checkHandler : onItemCheck
}, {
text : '黑色颜色',
checked : false,
group : 'theme',//为单选项进行分组
checkHandler : onItemCheck
} ]
})
}, {
text : '是否启用',
checked : false
} ]
});
toolbar.add({
text : '风格选择',
menu : themeMenu
});//将菜单加入工具栏
function onItemCheck(item){
    alert(item.text);
}
三:最常用的表单
Ext.form.Basic是基本的表单组件,提供了字段管理、数据验证、表单提交、数据加载等功能,它作用于Ext.container.Container容器,但推荐使用Ext.from.Panel作为表单容器,Ext.from.Panel会自动关联到Ext.form.Basic实例,方便进行字段的配置。
Ext.form.Basic 委托于Ext.form.Action进行数据的提交和加载,默认的提交动作是Ext.form.action.Submit 采用Ajax方式进行异步数据提交,如果要用原始方式提交表单可以使用Ext.form.action.standardSubmit方法。如果通过表单进行文件上传,则不能通过标准的Ajax方式进行,在ExtJS内部会通过iframe模拟Ajax进行异步表单文件上传操作。
最基本的表单:
Ext.require([ '*' ]);
Ext.onReady(function() {
Ext.QuickTips.init();//初始化信息提示框功能
var form=new Ext.form.Panel({
   title:'表单',//表单标题
   height:120,
   width:200,
   frame:true,//是否渲染表单
   renderTo:'form',
   defaults:{//统一设置表单字段默认属性
   //autoFitErrors:false,//展示错误信息时是否有自动调整字段组件宽度,默认为true
   labelSeparator:':',//分隔符
   labelWidth:50,//标签宽度
   width:150,//字段宽度
   allowBlank:false,//是否允许为空
   blankText:'不允许为空',
   labelAlign:'left',//标签对齐方式
   msgTarget:'side'//qtip:显示一个浮动提示信息; title:显示一个浏览器原始的浮动提示信息;
   //under:在字段下方显示一个提示信息; side:在字段右边显示一个提示信息;none:不显示提示信息;errorMsg:在errorMsg元素内显示信息  
   },
   items:[
   {xtype:'textfield',fieldLabel:'姓名'},
   {xtype:'numberfield',fieldLabel:'年龄'}]
});
});

四:表单其他控件

表单其他控件:
//Ext.form.field.Text 示例
var loginForm=new Ext.form.Panel({
title:'Ext.form.field.Text示例',
bodyStyle:'padding:5 5 5 5',//表单边距
frame:true,
width:270,
renderTo:'loginForm',
defaultType:'textfield',//设置表单字段的默认类型
defaults:{
labelSeparator:':',//分隔符
labelWidth:60,//标签宽度
width:150,//字段宽度
allowBlank:false,
labelAlign:'left',
msgTarget:'qtip'//设置显示提示信息的位置
},
items:[{
  fieldLabel:'用户名',
  name:'userName',
  selectionOnFocus:true,//得到焦点时自动选择文本
  //验证电子邮件格式的正则表达式
  regex:/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]{2,4})$/,
  regexText:'格式错误'//验证错误之后的提示信息
},
{
  name:'password',
  fieldLabel:'密码',
  inputType:'password'//设置输入类型为password
},
{//textarea 实例
  xtype:'textarea',
  fieldLabel:'备注',
  id:'memo',
  labelWidth:50,
  width:200
},
//数字框
{
xtype:'numberfield',
  fieldLabel:'整数',
  hideTrigger:true,//隐藏微调按钮
  allowDecimals:false,//不允许输入小数
  nanText:'请输入有效的整数'//输入无效数字的提示
},
{
  xtype:'numberfield',
  fieldLabel:'小数',
  hideTrigger:false,
  decimalPrecision:2,
  allowDecimals:true,
  nanText:'请输入有效的小数'
},
{
  xtype:'numberfield',
  fieldLabel:'数字限制',
  baseChars:'12345'
},
{
  xtype:'numberfield',
  fieldLabel:'数值限制',
  maxValue:100,
  minValue:50
},
//Ext.form.field.Radio 以及Ext.from.field.CheckBox 示例
{
  xtype:'radio',
  name:'sex',//name相同的单选框会作为一组
  fieldLabel:'性别',
  boxLabel:'男'
},
{
  xtype:'radio',
  name:'sex',//name相同的单选框会作为一组
  fieldLabel:'性别',
  boxLabel:'女'
},{
  xtype:'checkboxfield',
  name:'swim',
  fieldLabel:'爱好',
  boxLabel:'游泳'
},
{
  xtype:'checkboxfield',
  name:'walk',
  fieldLabel:'爱好',
  boxLabel:'散步'
},
  //radiogroup
{
  xtype:'radiogroup',
  fieldLabel:'性别',
  colums:2,//2列
  items:[
  {boxLabel:'男',name:'sex',inputValue:'male'},
  {boxLabel:'女',name:'sex',inputValue:'female'}
  ]
},
{
xtype:'checkboxgroup',
fieldLabel:'爱好',
width:270,
columns:3,
items:[
  {boxLabel:'游泳',name:'swim'},
  {boxLabel:'散步',name:'walk'},
  {boxLabel:'阅读',name:'read'},
  {boxLabel:'游戏',name:'game'},
  {boxLabel:'电影',name:'film'}
]
},
//Trigger:扩展自Ext.form.field.Text,增加了一个可以点击的触发按钮
{
xtype:'triggerfield',
id:'memo1',
fieldLabel:'触发字段',
hiderTrigger:false,//不隐藏触发按钮
onTriggerClick:function(){
  var memo1=loginForm.getForm().findField("memo1");
  alert(memo1.getValue());
  Ext.getCmp('memo1').setValue('test');
}
},
//微调按钮的使用
{
  xtype:'spinnerfield',
  fieldLabel:'微调字段',
  id:'salary',
  value:100,
  onSpinUp:function(){
   var salaryCmp=Ext.getCmp('salary');//通过组建的id获取组建对象
   //增加默认值
   salaryCmp.setValue(Number(salaryCmp.getValue())+1);
  },
  onSpinDown:function(){
   var salaryCmp=Ext.getCmp('salary');//通过组建的id获取组建对象
   //增加默认值
   salaryCmp.setValue(Number(salaryCmp.getValue())-1);
  }
}
],
buttons:[{
  text:'登陆',
  handler:function(){
   loginForm.form.setValues({userName:'user@com',password:'123456'});
  }
},
{text:'确定',handler:showValue}
]
});
function showValue(){
var memo=loginForm.getForm().findField('memo');//取得输入控件
alert(memo.getValue());//获得控制输入的值
}
//Trigger:扩展自Ext.form.field.Text,增加了一个可以点击的触发按钮;

注:在实际开发中很少直接使用Trigger字段,ExtJS对Trigger做了两个基本的扩充:Ext.form.field.Picker和Ext.form.field.Spinner 微调字段


分享到:
评论

相关推荐

    MFC工具栏ToolBar按钮添加下拉菜单

    MFC 工具栏 ToolBar 按钮添加下拉菜单 MFC 工具栏 ToolBar 按钮添加下拉菜单是指在 MFC 应用程序中,将工具栏按钮添加下拉菜单,以提供更多的功能选项。下面将详细介绍如何实现该功能。 首先,在 MainFrm.cpp 的 ...

    wxpython的toolbar工具栏和menu菜单组件

    主要是对wxpython的toolbar工具栏和menu菜单组件进行一个讲解,toolbar和menu作为一个较为常用的组件,在大部分的界面开发中都可能会使用到,以及对wxpython的主界面上的一些细节进行处理

    对话框中工具栏和菜单栏状态同步更新(禁用,启用)

    在Windows应用程序开发中,对话框(Dialog Box)是用户与软件交互的重要界面元素,而工具栏(ToolBar)和菜单栏(Menu Bar)则是常见的交互控制组件。这些组件的状态同步是用户体验的重要组成部分,确保用户在使用时...

    VC在Dialog中使用Menu和Toolbar为工具栏添加工具提示

    本篇文章将详细介绍如何在Dialog中集成菜单(Menu)和工具栏(Toolbar),并为工具栏上的按钮添加工具提示(ToolTips)。 首先,让我们了解对话框(Dialog)、菜单(Menu)和工具栏(Toolbar)的基本概念: 1. 对话框:对话框...

    对话框中工具栏和菜单栏状态同步(禁用,启用)

    对话框通常包含各种控件,如菜单栏(Menu Bar)和工具栏(Toolbar),以提供便捷的功能选择。在某些情况下,为了保持用户界面的一致性和易用性,我们需要使这些控件的状态保持同步,例如,当某项功能不可用时,对应...

    菜单栏、工具栏和状态栏

    本篇将详细介绍MFC中的三个重要组件:菜单栏、工具栏和状态栏,以及如何在MFC应用程序中使用它们。 **菜单栏** 菜单栏是用户界面中常见的元素,它位于窗口的顶部,通常包含一系列下拉菜单,每个菜单项对应一个操作...

    VC 菜单项及工具栏按钮启用与禁用

    "VC 菜单项及工具栏按钮启用与禁用" 是一个常见的需求,尤其是在设计用户交互时,根据特定条件控制菜单项和工具栏按钮的状态。这涉及到Windows编程中的消息处理和控件状态管理。 1. **菜单项和工具栏按钮**: - ...

    MenuBar(VC++ 工具栏菜单)

    在Windows应用程序开发中,用户界面是至关重要的组成部分,而工具栏和菜单栏是用户交互的主要界面元素。VC++(Microsoft Visual C++)提供了一个强大的集成开发环境(IDE),用于创建包含自定义工具栏和菜单的应用...

    Android操作工具栏Toolbar的代码例子

    在Android开发中,工具栏(Toolbar)已经成为取代传统Action Bar的首选组件,它提供了更灵活的自定义样式和更高的兼容性。本示例主要讲解如何在应用中集成和使用Toolbar,以及结合SearchView实现搜索功能。 首先,...

    Qt Menu and Toolbar.rar

    在本文中,我们将深入探讨Qt框架中的菜单(Menu)和工具栏(Toolbar)的使用,以帮助你理解和创建自己的Qt应用程序。"Qt Menu and Toolbar.rar"这个压缩包包含了一个简单的Qt工程,它演示了如何在应用程序中添加和...

    零基础学VC_工具栏和菜单的编程

    在VC++编程环境中,工具栏(Toolbar)和菜单(Menu)是用户界面的重要组成部分,它们提供了直观、便捷的交互方式,使用户能够轻松地执行各种操作。本教程针对初学者,将详细介绍如何在零基础的情况下学习和实现VC++...

    qt自定义工具栏,类似word

    在Qt框架中,自定义工具栏(ToolBar)是一项常见的任务,尤其当开发者希望创建一个用户界面,该界面具有类似于Microsoft Word的功能时。本篇将详细阐述如何在Qt中实现这样的功能,参考链接为《qt自定义工具栏,类似...

    WPF菜单栏,工具栏,TabControl动态添加、删除(支持左右滑动,选择),标题栏可修改背景色

    在WPF中,`Menu`控件用于构建菜单栏,而`ToolBar`控件则用于创建工具栏。菜单项可以通过`MenuItem`元素来定义,而工具栏中的按钮则通过`ToolBarTray`和`ToolBar`控件内的`Button`元素实现。动态添加菜单项或工具栏...

    如何在工具栏添加下拉菜单(visual studio C++源代码编写)

    在Visual Studio中,创建一个新的MFC应用项目,并确保包含`ResourceView`,在这里你可以编辑资源,如菜单、对话框和工具栏。打开`ToolBar`资源,右键单击并选择“添加按钮”来创建一个新按钮。接着,为这个按钮分配...

    MFC菜单工具栏以及状态栏编程

    在Windows应用程序开发中,Microsoft Foundation Class (MFC)库提供了一套丰富的类,使得开发者能够方便地创建具有标准用户界面元素的应用程序,如菜单、工具栏和状态栏。MFC库是微软为C++程序员设计的,它封装了...

    MFC对话框上显示带下拉菜单的工具栏

    本篇文章将详细探讨如何在MFC对话框上添加带下拉菜单的工具栏,以及如何将这些菜单设置为图片按钮。 首先,我们需要创建一个MFC对话框应用程序。在Visual Studio中,选择“新建项目” -&gt; “MFC” -&gt; “MFC应用程序...

    仿Winform而编写的工具栏和菜单控件源码asp.net

    本资源提供了“仿Winform而编写的工具栏和菜单控件源码”,这是一套专为ASP.NET设计的组件,旨在模仿Windows桌面应用(Winform)中的界面元素,如工具栏(Toolbar)和菜单(Menu),从而为Web应用程序提供更加直观和...

    ASP.NET工具栏和菜单控件源码(仿Winform).zip

    在ASP.NET中,工具栏(ToolBar)和菜单(Menu)控件是两个常用的用户界面元素,它们能够提供丰富的交互性和便捷的操作体验。本压缩包中的源码着重展示了如何在ASP.NET环境中模仿Winform应用中的工具栏和菜单控件的...

    vs2010 CMFCToolBar 工具栏 修改背景颜色

    如果你的工具栏使用了位图资源(如`MyControlbariml.cpp`和`MyControlbariml.h`中的),可能还需要更新这些资源以匹配新的背景颜色。这可能涉及到重新绘制位图或调整位图的透明度。 5. **注册自定义控件**: 如果...

    vc++工具栏和菜单的编程

    在VC++编程中,工具栏(Toolbar)和菜单(Menu)是用户界面的重要组成部分,它们提供了直观、便捷的交互方式。对于初学者来说,理解和掌握这两者的编程技巧是至关重要的。下面将详细介绍如何在VC++中创建和管理工具...

Global site tag (gtag.js) - Google Analytics