当前位置: 首页 > 编程日记 > 正文

学习ExtJS4 常用控件

ExtJS组件配置方式介绍

1.使用逗号分隔参数列表配置组件
      首先来看一个简单的逗号分隔参数列表的例子。这个例子非常简单,它用来显示信息提示框。

2.使用Json对象配置组件
     接下来看一个使用Json对象配置组件的例子,很多地方习惯性称之为配置对象。

    <script>Ext.onReady(function () {//使用逗号配置Ext.Msg.alert('提示', '逗号分隔参数列表');//使用Json对象配置var config = {title: '使用Json对象配置',msg:'这里是提示信息!'};Ext.Msg.show(config);});</script>

ExtKS开放了大量配置项以满足程序员在实际项目中的不同需求,熟悉各个配置项的配置方式以及效果是我们快速掌握EXTJS的一个捷径。

信息提示框组件介绍

Ext.window.MessageBox是一个工具类,用来生成各种风格的信息提示框。其实例对象可以通过Ext.MessageBox或Ext.Msg来访问,两者具有相同的效果,后者提供更简便的调用方式。
   Ext.MessageBox提供的信息对话框显示的文本不仅支持纯文本显示还支持HTML格式文本,采用HTML格式文本进行排版,效果更加丰富多彩。
   Javascript中标准的alert会阻塞浏览器脚本的执行,但是Ext.MessageBox不会,它是异步调用。
   1.Ext.MessageBox.alert是一个只读信息提示框,可以为其提供一个回调函数,该函数将在单击按钮后被调用(不包括右上角的退出按钮),所单击按钮的ID将作为唯一的参数传递到回调函数中。

    <script>Ext.onReady(function () {Ext.Msg.alert('提示',"<b>提示信息</b>");});</script>

2.Ext.MessageBox.confirm确认对话框,支持传入回调函数,与Ext.MessageBox.alert一致。

    <script>Ext.onReady(function () {Ext.Msg.confirm('提示', '你确定要这样做吗',callback);function callback(id) {alert("你点击了:"+id);}});</script>

3.Ext.MessageBox.prompt显示用户输入信息的对话框。支持传入回调函数,所单击的按钮id以及文本框的内容将作为参数传递到回调函数中。

    <script>Ext.onReady(function () {//true表示多行文本输入框Ext.Msg.prompt("提示", "请输入信息",callback,true,'默认值');function callback(id, msg) {alert("点击按钮:"+id+" 输入信息:"+msg);}});</script>

4.Ext.MessageBox.wait()显示一个自动滚动的进度框。它被用在一个耗时的交互操作中,它不能定义一个时间间隔自动关闭,需要手动关闭。

    <script>Ext.onReady(function () {Ext.Msg.wait("请等待", "温馨提示", {text:'进度条上的文字'});});</script>

5.Ext.MessageBox.show()基于配置显示新的信息提示框或重置一个已经存在的信息提示框。前面介绍的3个方法内部调用的都是它,尽管调用简捷,但是它不支持所有的配置项,要建立更加强大、个性化的提示框还需要掌握Ext.MessageBox.show方法做起。配置项太多,碍于篇幅,不列出,需要的人去查阅ExtJSAPI。该提示框是异步执行的,使用时请注意。

<script>Ext.onReady(function () {function callback(id, msg) {alert("点击的按钮:"+id+" 信息:"+msg);}Ext.Msg.show({title: '温馨提示',msg: '三个按钮和一个文本区',modal: true,//模态prompt: true,//含输入框value: '请输入',//输入框默认值fn: callback,//回调函数buttons: Ext.Msg.YESNOCANCEL,//可用按钮
                icon:Ext.Msg.QUESTION});});</script>

6.Ext.MessageBox其他功能
   (1) 改变默认的按钮文字

    <script>Ext.onReady(function () {//okExt.Msg.msgButtons[0].setText('按钮一');//yesExt.Msg.msgButtons[1].setText('按钮二');//noExt.Msg.msgButtons[2].setText('按钮三');//cancelExt.Msg.msgButtons[3].setText('按钮四');Ext.Msg.show({title: '提示',msg: '防火防盗防校长',modal: true,buttons:Ext.Msg.YESNOCANCEL});});</script>

(2) 动态更新信息提示框

    <script>Ext.onReady(function () {var msgBox = Ext.MessageBox.show({title: '提示',msg: '动态更新的信息文字',modal: true,buttons: Ext.Msg.OK,fn: function () {//回调函数//停止定时任务
                    Ext.TaskManager.stop(task);}});//Ext.TaskManager是一个功能类,用来执行定时程序var count = 1;var task = {run: function () {msgBox.updateText("正在上传第" + count + "条数据...");count++;},interval:1000};Ext.TaskManager.start(task);});</script>

(3) 更新进度以及提示信息

 <script>Ext.onReady(function () {var msgBox = Ext.Msg.show({title: '显示',msg: '信息',modal: true,width: 300,progress: true //使用进度条
            });var count = 0;//滚动条刷新的次数var percentage = 0;//进度百分比var progressText = '';//进度条信息var task = {run: function () {count++;//计算进度percentage = count / 10;//生成进度条上的文字progressText = '当前完成度:' + percentage * 100 + '%';//更新信息提示对话框msgBox.updateProgress(percentage, progressText, '当前时间:' + Ext.util.Format.date(new Date(), 'Y-m-d g:i:s A'));//刷新10次关闭信息提示对话框if (count > 10) {Ext.TaskManager.stop(task);msgBox.hide();}},interval:1000};Ext.TaskManager.start(task);});</script>

进度条组件介绍

Ext.ProgressBar是一个可更新的进度条组件,该进度条具有手工模式和自动模式。手工模式下,需要自己控制进度条的显示,自动模式下,只要调用wait方法,进度条就会无限制的滚动下去,它适合为那么耗时长的同步操作进行提示。

    <script>Ext.onReady(function () {var ProgressBar = new Ext.ProgressBar({title: '进度条',width: 300,text:'请等待...',//使用htmlbody作为渲染容器//renderTo:Ext.getBody()renderTo: 'div'});});</script>

手工模式的进度条是通过调用进度条的updateProgress()方法来实现的。手工更新的进度条非常适合可以掌握程序的执行状态的长时间操作。例如文件的上传进度,如果有些操作无法实时获取进度,只能采用自动更新的进度条信息。

 <script>Ext.onReady(function () {var progressbar = new Ext.ProgressBar({width: 300,renderTo:'div'});var count = 0;//滚动条更新次数var percentage = 0;//进度条百分比var progressText = '';//进度条信息
            Ext.TaskManager.start({run: function () {count++;if (count >= 10)progressbar.hide();//计算进度percentage = count / 10;progressText = percentage * 100 + '%';//更新信息 参数含义:百分比,进度条文字,是否使用动画效果progressbar.updateProgress(percentage,progressText,true);},interval: 1000,//方法执行时间间隔repeat:6 //设置执行次数
            });});</script>

创建一个自动模式的进度条并不复杂,只用调用进度条的wait方法,进行必要的配置即可得到一个理想状态的自动更新的进度条了。

  <script>Ext.onReady(function () {var ProgressBar = new Ext.ProgressBar({text: '正在处理,请稍后...',width: 300,renderTo: 'ProgressBar'});ProgressBar.wait({duration: 10000,//进度条持续更新10秒interval: 1000,//每1秒更新一次increment: 10,//进度条分10次更新完毕text: 'waiting',//进度条上的文字scope: this,//回调函数的执行fanwfn: function () {Ext.Msg.alert('提示', '更新完毕');}});});</script>

通过cls配置改变进度条的样式。

    <style type="text/css">.custom .x-progress-inner{height: 17px;background: #fff;}.custom .x-progress-bar{height: 15px;background: transparent url(images/custom-bar-red.gif) repeat-x 0 0;border-top: 1px solid #BEBEBE;border-bottom: 1px solid #EFEFEF;border-right: 0;}</style><script>Ext.onReady(function () {var ProgressBar = new Ext.ProgressBar({width: 300,//设定进度条的宽度renderTo: 'ProgressBar',cls: 'custom'//使用自定义样式
            });ProgressBar.wait({duration: 10000,//进度条持续更新10秒钟interval: 1000,//每1秒钟更新一次increment: 10//进度条分10次更新完毕
            });});</script>

实现工具和菜单栏

Ext.toolbar.Toolbar是工具栏的基础组件,它相当于容器,在其中可以放置各种工具栏元素,主要包括按钮、文字和菜单组件。

 <script>Ext.onReady(function () {var toolbar = new Ext.toolbar.Toolbar({renderTo: 'toolbar',width: 300});toolbar.add([{text: '新建',//按钮上的文字handler: function () {alert('新建');},},{text: '打开',handler: function () {alert('打开');}},{text: '保存',handler: function () {alert('');}}]);});</script>
toolbar1

    <script>Ext.onReady(function () {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>',//加载一个HtmlElement{xtype:'tbspacer',width:50},//加入一个空白元素'静态文本'//加入一个简单字符串
                );Ext.get('btnEnable').on('click', function () {//启用工具栏
                toolbar.enable();});Ext.get('btnDisable').on('click', function () {//启用工具栏
                toolbar.disable();});});</script>
toolbar2

Ext.menu.Menu菜单

作为我们编写的第一个菜单栏,它以熟悉的文本编辑软件菜单栏为原型,主要分为文件菜单和编辑菜单,在文件下拉菜单中有3个菜单选项,分别是新建、打开、关闭,在编辑下拉菜单中包含复制、粘帖、剪切。

    <script>Ext.onReady(function () {function onMenuItem(item) {alert(item.text);}var toolbar = new Ext.toolbar.Toolbar({renderTo: 'toolbar',width: 300});var fileMenu = new Ext.menu.Menu({shadow: 'frame',//设置菜单四条边都有阴影allowOtherMenus: true,items: [new Ext.menu.Item({text: '新建',handler: onMenuItem}),//添加菜单项{ text: '打开', handler: onMenuItem },{ text: '关闭', handler: onMenuItem }]});var editorMenu = new Ext.menu.Menu({shadow: 'drop',//设置菜单在右下有阴影allowOtherMenus: true,items: [{ text: '复制', handler: onMenuItem },{ text: '粘帖', handler: onMenuItem },{ text: '剪切', handler: onMenuItem }]});toolbar.add({text: '文件',menu:fileMenu},{text: '编辑',menu:editorMenu});});</script>

接下来看多级菜单的实现方式,在以下示例中是通过Ext.menu.Item的menu配置项来完成多级菜单的关联。

 <script>Ext.onReady(function () {function handleItem(item) {alert(item.text);}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: handleItem},{text: '体重',handler: handleItem}]})}]})},{text: '公司信息'}]});Toolbar.add({text: '设置',menu: infoMenu});});</script>

将更多组件加入菜单。再以上2个示例中介绍了简单菜单和多级菜单的创建,示例中菜单项都是Ext.menu.Menu对象,其表现形式中规中矩,下面演示一下向菜单栏
中添加丰富的组件。

    <style type="text/css">.userManagerIcon{background-image: url(images/userManager.gif) !important;
        }.newIcon{background-image: url(images/new.gif) !important;
        }.openIcon{background-image: url(images/open.gif) !important;
        }.saveIcon{background-image: url(images/save.gif) !important;
        }</style><script>Ext.onReady(function () {var Toolbar = new Ext.toolbar.Toolbar({//创建工具栏renderTo: 'toolbar',width: 300});var fileMenu = new Ext.menu.Menu({//文件创建菜单
                items: [{xtype: 'textfield',//创建表单字段hideLabel: true,width: 100}, {text: "颜色选择",menu: new Ext.menu.ColorPicker()},{ xtype: 'datepicker' },//添加日期选择器组件
                    {xtype: 'buttongroup',//添加按钮组组件columns: 3,title: '按钮组',items: [{text: '用户管理',scale: 'large',colspan: 3,width: 170,iconCls: 'userManagerIcon',iconAlign: 'top'}, {text: '新建', iconCls: 'newIcon'}, {text: '打开', iconCls: 'openIcon'}, {text: '保存', iconCls: 'saveIcon'}]}]});Toolbar.add({ text: '文件', menu: fileMenu }//将菜单加入工具栏
            );});</script>

文中示例代码下载

示例代码

转载于:https://www.cnblogs.com/codealone/p/3152375.html

相关文章:

青少年编程竞赛交流群周报(第036周)

2021年10月31日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第三十六期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。…

中国电信打造“三朵云”战略 助力互联网+医疗发展

随着云计算、大数据的快速发展&#xff0c;全行业上云成为一个趋势&#xff0c;在健康医疗这个领域&#xff0c;应大势之趋&#xff0c;纷纷构建医疗云。近日&#xff0c;中国电信医疗云专区北京节点发布会在京顺利召开&#xff0c;会后北京电信副总经理项煌妹接受了中国IDC圈记…

python 数据类笔试题_一道 Python 类的笔试题详解

r {}class C(object):def __init__(self, a, b):self.a aself.b bif b a:orig super(C, cls)r[cls.instance] 1a C(1, a)b C(1, a)c C(1, b)l [a, b, c]for i in l:if i not in r:r[i] 1else:r[i] 1assert r[a] 2assert r[b] 2assert r[c] 1原题目要求如下&…

【优秀作业】粒子群算法(Python)

粒子群优化算法 一、概述 粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;的思想来源于对鸟捕食行为的模仿&#xff0c;最初&#xff0c;Reynolds.Heppner 等科学家研究的是鸟类飞行的美学和那些能使鸟群同时突然改变方向&#xff0c;分散…

警惕企业中的五种虚假执行力

第一种虚假执行力&#xff1a;无条件服从——只强调员工“服从”&#xff0c;不强调员工的智慧 很多人讲执行力&#xff0c;很喜欢强调员工的无条件服从。这种观念是OEM(代工生产)制造业时代的产物。实际上这是一种基于“规模制造”的虚假执行力&#xff0c;其本质是把人当成了…

真实记录疑似Linux病毒导致服务器 带宽跑满的解决过程

案例描述 由于最近我在重构之前的APP&#xff0c;需要和server端进行数据交互&#xff0c;发现有一个现象&#xff0c;那么就是隔1~2天总会发生获取数据超时的问题&#xff0c;而且必须要重启服务器才能解决。早在之前&#xff0c;我有留意到这个问题&#xff0c;但是由于这个服…

java集合总结_Java中集合总结

Java数组的长度是固定的&#xff0c;为了使程序能够方便地存储和操作数目不固定的一组数据&#xff0c;JDK类库提供了Java集合&#xff0c;这些集合类都位于java.util包中&#xff0c;但是与数组不同的是&#xff0c;集合中不能存放基本类型数据&#xff0c;而只能存放对象的引…

区块链基本解读

最近看着这个区块链&#xff0c;稍有新得&#xff0c;写下菜鸟自己的理解&#xff0c;希望大牛多多指点。 总体心得&#xff0c;如果互联网技术解决的是通讯问题的话&#xff0c;区块链技术解决的是信任问题。 下面举个日常例子&#xff1a;打赌 比如A和B赌石头是否为天然玉石&…

PDO防注入原理分析以及使用PDO的注意事项 (转)

我们都知道&#xff0c;只要合理正确使用PDO,可以基本上防止SQL注入的产生&#xff0c;本文主要回答以下两个问题&#xff1a; 为什么要使用PDO而不是mysql_connect&#xff1f; 为何PDO能防注入&#xff1f; 使用PDO防注入的时候应该特别注意什么? 一、为何要优先使用PDO? P…

LSGO软件技术团队招新 线下组队学习

团队招新 LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成立于2010年09月&#xff0c;团队主要从事地理信息系统、管理信息系统、计算机视觉等领域的应用开发&#xff0c;团队同时具有培养学生的重要职能&#xff0c;毕业学生分布在IBM、百度、阿里、腾讯、京东、…

java spring 配置文件_[Java教程]Spring配置文件

[Java教程]Spring配置文件02016-03-19 00:00:08Spring配置文件是集成了Spring框架的项目的核心&#xff0c;引擎从哪里开始&#xff0c;中间都执行了哪些操作&#xff0c;小谈一下它的执行流程。容器先是加载web.接着是applicationContext.一种方法是加入ContextLoaderServlet这…

王子朝:一种高效且容错的方法用于协作车辆定位

王子朝是华北电力大学计算机系大四的学生&#xff0c;Dreamtech成员&#xff0c;参加了多期Dreamtech与Datawhale联合组织的组队学习活动&#xff0c;现保送西安电子科技大学深造。 这篇图文是他在线下组队学习时&#xff0c;为大家分享自己所看论文的总结。 希望参与我们组队…

python文件句柄_Python文件操作

classfile(object):def close(self): #real signature unknown; restored from __doc__关闭文件"""close() -> None or (perhaps) an integer. Close the file.Sets data attribute .closed to True. A closed file cannot be used forfurther I/O operation…

XML简单的增改删操作

XML文件的简单增改删&#xff0c;每一个都可以单独拿出来使用。 新创建XML文件&#xff0c;<?xmlversion"1.0"encoding"utf-8"?> <bookstore> <bookgenre"fantasy"ISBN"2-3631-4"> <title>Oberons Legacy&l…

javascript推荐书籍

WEB前端研发工程师&#xff0c;在国内算是一个朝阳职业&#xff0c;这个领域没有学校的正规教育&#xff0c;大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程&#xff0c;目的是给想了解 JavaScript或者是刚接触JavaScrip…

【青少年编程竞赛交流】10月份微信图文索引

10月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习&#xff0c;所以&#xff0c;我另外新建了这个微信公众号“青少年编程竞赛交流”&#xff0c;在这个公众号上分享有关青少年编程方面的知识。如果大家需要就关注这个…

java 简单万年历_JAVA实现的简单万年历代码

本文实例讲述了JAVA实现的简单万年历。分享给大家供大家参考&#xff0c;具体如下&#xff1a;import java.util.Scanner;public class PrintCalendar {public static void main(String[] args) {int years 0;int month 0;int days 0;boolean isRun false;//從控制台輸入年…

mongoDB 入门指南、示例

http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南、示例 上一篇&#xff1a;简单介绍mongoDB 一、准备工作 1、 下载mongoDB 下载地址&#xff1a;http://www.mongodb.org/downloads 选择合适你的版本 相关文档&#xff1a;http://www.mongodb.…

中国电子学会图形化四级编程题:成语接龙

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

sidecar学习

1、SideCar的出现 微服务的结构是细粒度的&#xff0c;由多个服务构成&#xff0c;支持不同的服务用不同的语言来编写&#xff0c;比如a服务用python&#xff0c;b服务用java&#xff0c;C服务用php等&#xff0c;我们称为异构语言&#xff0c;那么在利用zuul来代理访问服务的时…

java整数常量区_在Java中,我可以用二进制格式定义一个整数常量吗?

所以&#xff0c;随着Java SE 7的发布&#xff0c;二进制表示法是标准的。 如果你对二进制有一个很好的理解&#xff0c;语法是非常简单明了的。byte fourTimesThree 0b1100; byte data 0b0000110011; short number 0b111111111111111; int overflow 0b1010101010101010101…

[LeetCode 120] - 三角形(Triangle)

问题 给出一个三角形&#xff0c;找出从顶部至底部的最小路径和。每一步你只能移动到下一行的邻接数字。 例如&#xff0c;给出如下三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最小路径和为11&#xff08;即235111&#xff09;。 注意&#xff1a; …

中国电子学会scratch等级考试四级编程题:找出出现次数最多的数字

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100&#xff0c;小马老…

人工智能 有信息搜索 (启发式)

一、最佳优先搜索 根据评价函数选择表现的最佳的节点进行扩展 最佳优先搜索 best-first-search 算法 不同的方法有不同的评价函数 启发函数&#xff0c;标记h(x) h(n)从节点n到目标的最低耗散估计值 启发函数是额外信息的一种最普通的形式 二、贪婪最佳优先搜索 最先扩展离目标…

java 排序算法 讲解_java实现排序算法之冒泡排序法详细讲解

冒泡排序(Bubble Sort)&#xff0c;是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序。这…

24、线程控制

线程有一套完整的与其有关的函数库可供调用&#xff0c;它们中的绝大多数函数名都以pthread_开头。为了调用这些函数库&#xff0c;必须在程序中包含头文件pthread.h,并且在比那一程序时使用选项-lpthread来链接线程库。 1、线程标识 就像每个进程有一个进程ID一样&#xff0c;…

Datawhale组队学习周报(第038周)

本周报总结了从 11月01日至11月07日&#xff0c;Datawhale组队学习的运行情况&#xff0c;我们一直秉承“与学习者一起成长的理念”&#xff0c;希望这个活动能够让更多的学习者受益。 第 30 期组队学习一共 8 门开源课程&#xff0c;共组建了 8 个学习群&#xff0c;参与的学…

OpenGL概念辨析: 窗口,视口,裁剪区域

1.窗口&#xff1a;这就不用解释了吧 2.视口&#xff1a;就是窗口中用来显示图形的一块矩形区域&#xff0c;它可以和窗口等大&#xff0c;也可以比窗口大或者小。只有绘制在视口区域中的图形才能被显示&#xff0c;如果图形有一部分超出了视口区域&#xff0c;那么那一部分是看…

java源码推荐_基于java的推荐系统实现源代码

【实例简介】常用推荐算法java实现~涉及多种相似度计算&#xff0c;比如cosine相似度&#xff0c;欧氏距离等~(recommand algirithm )【实例截图】【核心代码】RecommendSystemJavaCode└── Recommend└── src├── collaborative│ ├── cache│ │ ├── FileS…