本篇要登场的有三个控件,分别是滚轴控件、进度条控件和编辑控件。

一、滚轴控件 Ext.slider

1.滚轴控件的定义

下面我们定义三个具有代表意义滚轴控件,分别展示滚轴横向、纵向,以及单值、多值选择的特性:

[html]
    <h1>滚轴控件</h1>
    <div class="content">
        <h2>横向,初始值50</h2>
        <div id="slider1"></div>

        <h2>纵向,带提示</h2>
        <div id="slider2"></div>

         <h2>多值,自定义提示</h2>
        <div id="slider3"></div>
    </div>

[Js]
    //横向,初始值50
    var slider1 = Ext.create('Ext.slider.Single',{
        renderTo: 'slider1',width: 214,minValue: 0,maxValue: 100,value: 50
    });

    //纵向,带提示
    new Ext.create('Ext.slider.Single',{
        renderTo: 'slider2',height: 150,maxValue: 20,vertical: true,plugins: new Ext.slider.Tip()
    });

    //多值,自定义提示
    var slider3 = Ext.create('Ext.slider.Multi',{
        renderTo: 'slider3',values: [5,12],plugins: new Ext.slider.Tip({
            getText: function (thumb) {
                return Ext.String.format('当前:<b>{0}/20</b>',thumb.value);
            }
        })
    });

2.获取、设置滚轴控件的值

[html]
    <h1>操作滚轴控件</h1>
    <div class="content">
    <button id="button1">设置滚轴1的值为10</button>
    <button id="button2">获取滚轴1的值</button>
    <button id="button3">设置滚轴3的值为10,15</button>
    <button id="button4">获取滚轴3的值集合</button>
    </div>

[Js]
    //设置滚轴1的值为10
    Ext.fly("button1").on('click',function () {
        slider1.setValue(10);
    });

    //获取滚轴1的值
    Ext.fly("button2").on('click',function () {
        Ext.MessageBox.alert("获取值","滚轴1的值:" + slider1.getValue());
    });

    //设置滚轴3的值为10,15
    Ext.fly("button3").on('click',function () {
        slider3.setValue(0,10);
        slider3.setValue(1,15);
    });

    //获取滚轴3的值集合
    Ext.fly("button4").on('click',"滚轴3的值集合:" + slider3.getValues());
    });

3.效果展示


二、进度条控件 Ext.ProgressBar

1.加载进度条

[html]
    <div class="content">
        <button id="button1">执行</button>
        <div id="p1" style="width: 300px;"></div>
    </div><br />

[Js]
    //加载进度条
    var progressBar1 = Ext.create("Ext.ProgressBar",{
        id: "progressBar1",text: '准备中...',renderTo: 'p1'
    });
    Ext.fly("button1").on('click',function () {
        //模拟加载环境
        var f = function (v) {
            return function () {
                var i = v / 12;
                progressBar1.updateProgress(i,'进度:' + v + '/12');
                if (v == 12) {
                    Ext.Msg.alert("提示","加载完毕!");
                    progressBar1.reset();   //复位进度条
                    progressBar1.updateText("完成。");
                }
            };
        };
        for (var i = 1; i < 13; i++) {
            setTimeout(f(i),i * 200);
        }
    });

2.等候进度条

[html]
    <div class="content">
        <button id="button2">执行</button>
        <div id="p2"></div>
        <span id="p2text"></span>
    </div><br />

[Js]
    //等候进度条
    var pbar2 = Ext.create("Ext.ProgressBar",{
        id: "progressBar2",renderTo: 'p2',width: '150px'
    });
    pbar2.on('update',function (val) {
        //每次更新可以执行的动作
        Ext.fly('p2text').dom.innerHTML += '>';
    });
    Ext.fly("button2").on('click',function () {
        Ext.fly('p2text').update('正在启动windows2000:');
        pbar2.wait({
            interval: 200,//每次更新的间隔周期
            duration: 5000,//进度条运作时间的长度,单位是毫秒
            increment: 5,//进度条每次更新的幅度大小,表示走完一轮要几次(默认为10)。
            fn: function () {           //当进度条完成自动更新后执行的回调函数。该函数没有参数。
                Ext.fly('p2text').update('完成。');
            }
        });
    });

3.等候进度条,等待第三方事件

[html]
    <div class="content">
        <button id="button3">执行</button>
        <div id="p3"></div>
        <span id="p3text"></span>
    </div>

[Js]
    //等候进度条,当第三方事件结束时,停止。
    var pbar3 = Ext.create("Ext.ProgressBar",{
        renderTo: 'p3',width: '250px'
    });

    Ext.fly("button3").on('click',function () {
        pbar3.wait({
            interval: 100,increment: 5
        });
        Ext.fly('p3text').update('第三方事件正在执行,请稍候....');

        setTimeout(function () {
            pbar3.reset();
            Ext.fly('p3text').update('执行完毕.');
        },5000);
    });

4.效果展示

三、编辑控件 Ext.Editor

编辑控件可以作用在一般html元素或者其他ext基本控件上,从而然这些基本元素和控件具备了编辑某些值的能力。

1.用文本框编辑普通文本

下面通过一个编辑控件作用在span标签上,双击该标签即可编辑该标签的文本类容。

[html]
    <h1>用文本框编辑普通文本</h1>
    <div class="content">
    <span id="span1">请双击我修改文字</span>
    </div>

[Js]
    //用文本框编辑普通文本
    var editor1 = new Ext.Editor({
        shadow: false,completeOnEnter: true,//按回车时自动完成
        cancelOnesc: true,//按ESC自动退出编辑
        updateEl: true,//有变化时更新
        ignoreNoChange: true,//不理会没有变化的情况
        listeners: {
            complete: function (editor,value,oldValue) {
                Ext.Msg.alert('文本被改变',"从“" + oldValue + "” 变为“" + value + "”");
            }
        },field: {
            allowBlank: false,xtype: 'textfield',width: 150,selectOnFocus: true
        }
    });

    Ext.get("span1").on('dblclick',function (event,span1_dom) {
        editor1.startEdit(span1_dom);
    });

效果如下:

处于编辑状态时:

2.用下拉列表编辑

这个例子要修改Ext.Panel控件的标题。

[html]
        <h1>用下拉列表编辑</h1>
    <div class="content" id="div2">
    
    </div>

[Js]
    //用下拉列表编辑
    var editor2 = new Ext.Editor({
        shadow: false,cancelOnesc: true,updateEl: true,ignoreNoChange: true,listeners: {
            complete: function (editor,field: {
            width: 110,id: "combo1",//renderTo: 'div2',triggerAction: 'all',xtype: 'combo',editable: false,forceSelection: true,store: ['下拉项1','下拉项2','下拉项3']
        }
    });

    var panel = new Ext.Panel({
        renderTo: "div2",width: 200,height: 50,collapsible: true,layout: 'fit',title: '请双击标题',listeners: {
            afterrender: function (panel) {
                panel.header.titleCmp.textEl.on('dblclick',label1_dom) {
                    editor2.startEdit(label1_dom);
                });
            }
        }
    });

效果如下:

处于编辑状态时:

出处:[Lipan] (http://www.cnblogs.com/lipan/)

ExtJs4 笔记8 Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件的更多相关文章

  1. HTML5仿微信聊天界面、微信朋友圈实例代码

    小编最近开发一个基于html5开发的一个微信聊天前端界面,功能很全面,下面小编给大家分享实例代码,需要的朋友参考下

  2. ios – OpenCV构建问题,找不到ext/atomicity.h

    我得到编译器错误抱怨在构建包含OpenCV的项目时.环境是针对iOS的Xcode4.5.它为模拟器编译良好,但在为设备构建时失败.这是错误文本:我正在使用opencv2.framework,使用指令here构建cmake.解决方法默认情况下,XCode4.5使用libc(支持C11的LLVMC标准库)生成要构建的新项目.但OpenCV期望针对GNUlibstd

  3. Android Studio 2.3更新:警告:使用不兼容的插件进行注释处理:android-apt.这可能会导致意外行为

    所以,我已经阅读了本网站上有关此问题的所有问题.我还与其中一位有类似问题的开发人员聊天,他能够解决这个问题.我没有在我的gradle脚本中编写apt或annotationProcessor.我的代码中没有任何地方写过android-apt这个词.我甚至继续检查了所有的库.这包含在我的项目中.这是一个非常大的问题,需要解决.我在下面附加修改后的build.gradle,请建议:解决方法较旧版本的Re

  4. 如何在Picasso库中实现Pinch Zoom?

    我在我目前的项目http://square.github.io/picasso/中使用Picasso库.一切都运行正常,但我无法弄清楚如何为从URL加载的所有图像实现PinchZoom.说实话,我甚至不知道在哪里放置onClickListener.我的应用程序有几个片段,每个片段都有2个选项卡,第一个选项卡有一个ListView,第二个选项卡有一些显示在GridView中的图片:Bmw.javaS

  5. android – 当应用程序强制关闭或设备重新启动时,共享首选项重置数据

    我正在开发一个应用程序,我在其中存储用户名和密码在SharedPreferences中.所有的东西都适合我,存储以及检索值.但我发现当我重启设备或强制关闭app时,SharedPreferences中存储的值会被重置.当我再次启动我的应用程序时,我在SharedPreferences键中获得空值.在这里,我正在做什么来存储值:而且,这就是我正在重温它的方式:到目前为止,所有的事情都很好.我再次说明我的问题,当我强制关闭或重启我的设备时,我得到空值.我们可以将它永久存储在应用程序内存中吗?

  6. android – 重置Preference的默认值

    我正在使用CheckBoxPreference进行设置屏幕.XML是:我在应用程序中更改了值.用户注销后,必须将其设置为xml中定义的默认值.但是,它似乎不起作用.他们保留我最后选择的那些价值观.阅读Android文档后,我发现了这个:但它几乎没有成功!使用SharedPreferences尝试其他方式.它也没用!我错过了什么吗?解决方法共享首选项应该有效,但您应该使用默认的共享首选项.要使用文件名获取共享首选项,Android会创建此名称(可能基于项目的包名称?

  7. android – 共享首选项仅保存第一次

    该程序第一次创建首选项,但之后它永远不会更改它们.我很感激帮助理解为什么.这是调用xml的PreferencesScreen.在首选项中,我有一个ListPreference和一个Preference,它调用一个活动来存储电子邮件.一切都在这里.问题出在所谓的……

  8. android – SharedPrefences未更新

    我有一个奇怪的问题,共享首选项在返回应用程序时没有被更新.这是场景:我有两个项目使用相同的共享首选项.Project1和Project2.它们是独立但相关的应用程序.他们使用相同的密钥进行签名,并使用sharedUserId来共享信息.Project1打开Project2.Project2检索SharedPreferences文件并通过以下方式写入:一旦完成,我通过调用finish()返回到Pro

  9. Android SharedPreferences限制?

    我在Android上开发了一款游戏.我目前正在保存数据库中的大部分游戏统计信息.但是,该应用程序不会在DB中使用多个单行.我现在有兴趣介绍一些新的统计数据,但这将导致我的数据库重新安装,从而清除每个人的进步.为了避免在将来的这个,我正在考虑存储游戏统计与SharedPreferences代替.我的问题是在成为问题之前可以将多少种不同的东西存储起来.总共我将存储大约40个值,所有的整数.解决方法Sh

  10. 详解Monaco Editor中的Keybinding机制

    这篇文章主要为大家介绍了详解Monaco Editor中的Keybinding机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部