`

ExtJs从入门到精通(1)

 
阅读更多

一、Web程序的革命

CGI

Java Applet

Flash

Web Start

AJAX

RIA 基于Flex、Sliverlight

 

二、学习ExtJs的前提

JavaScript

JSON       (减肥的XML数据传送模式)

HTML DOM

 

(1) Component 组件

(2) Class 类

数据支持类(data),拖放支持类(dd),布局支持类(layout),本地状态存储支持类(state)cookie

实用工具类(util)对象变JSON

密封类,不能被扩展的类

原型类,扩展了JavaScript标准类库中的类

(3) Method

自己控制private,public

(4) Event

订阅与退订

(5) Config option

相当于构造参数

(6) Property属性

(7) Namespace

 

三、ExtJs的环境配置

 

下载: http://www.extjs.com/products/extjs/download.php

       http://www.sencha.com/products/extjs/download/

 

目录结构

ext-all.js 和 ext-all-debug.js

ext-core.js 和 ext-core-debug.js

 

Adpater目录:使用其他优秀AJAX框架为ExtJs提供有力的技术支持,目前提供4种底层支持框架,ExtJs,JQuery,   Prototype,YUI

Air目录:提供对Adobe公司的RIA技术的支持

Build目录:各个组件的部署版本

Docs目录:ExtJs组件API文档

Examples目录:ExtJs自带的示例

Source目录

Resources目录:资源文件

 

 三、ExtJs的语言规范 

 1、命名空间

 Ext.namespace("Ext.dojochina");

 

Java代码对照:

package Ext.dojochina;

 

Hello.js

Ext.namespace("Ext.mwang");
Ext.mwang.HelloWorld = Ext.emptyFn;

 

相当于: Ext.mwang.HelloWorld = new Function(){};

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>HelloWorld.html</title>

		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="this is my page">
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">

		<link rel="stylesheet" type="text/css" href="./css/ext-all.css">
		<script type="text/javascript" src="./scripts/ext-base.js"></script>
        <script type="text/javascript" src="./scripts/ext-all.js"></script>		
		<script type="text/javascript" src="./scripts/Hello.js"></script>
		<script type="text/javascript">
		new Ext.mwang.HelloWorld();
</script>
	</head>

	<body>
		This is my HTML page.
		<br>
	</body>
</html>

 

 2、类实例属性

 Ext.apply(Ext.mwang.Person.prototype,{name:"大头"});

  

Java代码对照:

 

 Person{

     private String name = "大头";

 

     put get方法;

 

 3、类实例方法

 

 

Ext.namespace("Ext.mwang");
Ext.mwang.Person = Ext.emptyFn;
Ext.apply(Ext.mwang.Person.prototype, {
	name : 'aaa',
	sex : 'nv',
	print : function() {
		alert(String.format("name:{0},sex:{1}", this.name, this.sex));
	}
});

 

		var _person = new Ext.mwang.Person();
		alert(_person.sex);
		_person.name = "小头";
		alert(_person.name);
		_person.print();

 

 

 4、类静态方法

 

 

Ext.mwang.Person.print = function(_name, _sex) {
	alert(String.format("name:{0},sex:{1}", _name, _sex));
}

 

Ext.mwang.Person.print("a","b");

 

 5、类构造方法

 

 

Ext.mwang.Person = function(_cfg) {
    Ext.apply(this, _cfg);
}
Ext.mwang.Person.print = function(_name, _sex) {
	var _person = new Ext.mwang.Person({name:"A",sex:"B"});
	_person.print();
}

 

 

 5、类继承

 

 

Ext.namespace("Ext.mwang");

Ext.mwang.Person = function(_cfg) {
    Ext.apply(this, _cfg);
}
Ext.mwang.Person.print = function(_name, _sex) {
	var _person = new Ext.mwang.Person({name:"A",sex:"B"});
	_person.print();
}
Ext.apply(Ext.mwang.Person.prototype, {
            print : function() {
                alert(String.format("name:{0},sex:{1}", this.name, this.sex));
            }
        });
Ext.mwang.Student = function(_cfg) {
    Ext.apply(this, _cfg);
}
Ext.extend(Ext.mwang.Student,Ext.mwang.Person,{job:"学生"});

 

6、类实例方法重写 

 

7、命名空间别名

 

Dc = Ext.dojochina;                         第一个字母大写,后面全小写

 

 

8、类别名

 

 PN = Ext.dojochina.Person              全大写

 

 

9、事件对列

 

 Ext.util.Observable

 

Ext.namespace("Ext.mwang");
Dc = Ext.mwang;
Ext.mwang.Person = function(_cfg) {
	Ext.apply(this, _cfg);
	this.addEvents("namechanged", "sexchanged");
};
Ext.apply(Ext.mwang.Person.prototype, {
	name : "大头",
	sex : "男",
	print : function() {
		alert(this.name);
	}
});
Ext.extend(Ext.mwang.Person, Ext.util.Observable, {
	setName : function(_name) {
		if (this.name != _name) {
			this.fireEvent("namechanged", this, this.name, _name);
			this.name = _name;
		}
	}
});

 

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<link rel="stylesheet" type="text/css" href="./css/ext-all.css">
		<script type="text/javascript" src="./scripts/ext-base.js"></script>
		<script type="text/javascript" src="./scripts/ext-all-debug.js"></script>
		<script type="text/javascript" src="./scripts/Hello.js"></script>
		<script type="text/javascript">
	var _person = null;
	button_click = function() {
		_person.setName(prompt("Please input name:", ""));
	}
	Ext.onReady(function() {
		var txt_name1 = Ext.get("txt_name");
		_person = new Ext.mwang.Person();
		_person.on("namechanged", function(_person, _old, _new) {
			txt_name1.dom.value = _new;
		});
		_person.on("namechanged", function(_person, _old, _new) {
			document.title = _new;
		});
	});
</script>
	</head>


	<body>
		姓名:
		<input type="text" id="txt_name" />
		<br />
		性别:
		<input type="text" id="txt_name" />
		<br />
		<input type="button" value="input" onclick="button_click();" />
		<br />
	</body>
</html>

 

 GWT-ext: java程序员编写ExtJS提供可能

 EXTTLD: 为JSP程序员的标签化部署提供可能

 ExtSharp: 为C#的程序员编写ExtJS提供可能

 

 

 四、ExtJs初级UI

 

 1. Ext.button

	Ext.onReady(function() {
		new Ext.Button( {
			renderTo : Ext.getBody(),
			text : "确定"
		});
	});

  属性:

         renderTo:

         text

         minWidth

构造参数:

         handler:

         listeners:

         text

 方法:

         setText

 事件:

         click

 

 Ext.onReady(function() {
  var _button = new Ext.Button( {
   renderTo : Ext.getBody(),
   text : "确定",
   handler: function() {
    alert("aaaaa");
   }
  });
  _button.setText("Cacel");
 });

 

 Ext.onReady(function() {
  new Ext.Button( {
   renderTo : Ext.getBody(),
   text : "确定",
   listeners: {
    "click": function(){
    alert("aaaaa");
    }}
  });
 });       

 

  _btn.on("click",function(){
             alert("bbb");
             });

 

 2. Ext.form.TextField

 

fieldLable

 

getValue()

 

	Ext.onReady(function() {
		new Ext.form.TextField( {
			renderTo : Ext.getBody(),
			fieldLable : "姓名"
		});
	});

 

 

Ext.layout.FormLayout: 只有在此布局下才能正确显示lable,布局的宿主对象必须是Ext.Container或者Ext.Container的子类。在应用FormLayout 布局时只要在宿主对象的构造参数中指定layout:"form"即可。

Ext.getCmp(String _id): 得到id为_id的组件对象。

 

 

Ext.onReady(function() {
			var _panel = new Ext.Panel({
						renderTo : Ext.getBody(),
						layout : "form",
						labelWidth : 50,
						listeners : {
							"render" : function(_panel) {
								_panel.add(new Ext.form.TextField({
											id : "txt_name",
											fieldLabel : "姓名"
										}));
							}
						}
					});
			Ext.getCmp("txt_name").setValue("bbb");
		});

 

 

 3. Ext.Panel 

 

 

Ext.onReady(function() {
			var _panel = new Ext.Panel({
						// renderTo : Ext.getBody(),
						title : "人员信息",
						frame : true,
						width : 300,
						heigth : 200
					});
			_panel.addButton({
						text : "确定"
					});
			_panel.addButton(new Ext.Button({
						text : "取消",
						minWidth : 100
					}));
			_panel.render(Ext.getBody());
		});

 

addButton : 设计时

frame: true   四角变圆角,背景颜色

 

两个addButton的区别,第一个是form管理,第二个是自己管理。

 

renderTo   render()                    添加到容器里面

applyTo     applyToMarkup()     叠加到容器里面

 

 

    _panel.add({xtype : "textfield",fieldLable : "姓名" });

 

xtype 机制

 

Ext.onReady(function() {
	var _panel = new Ext.Panel({
				title : "登录",
				frame : true,
				width : 260,
				height : 130,
				layout : "form",
				labelWidth : 45
			});
	_panel.add({
				xtype : "textfield",
				id : "txt_account",
				fieldLabel : "帐号",
				width : 180
			});
	_panel.add({
				xtype : "textfield",
				id : "txt_password",
				fieldLabel : "密码",
				width : 180
			});
	_panel.addButton({
				text : "确定"
			});
	_panel.addButton({
				text : "取消"
			});
	// _panel.applyToMarkup("a2");
	_panel.render("a2");
		// _panel.applyToMarkup();
	});

 

DIV页面居中

		<div align="center">
            <div id="a1"
                style="height: 200; ">
                aaa
            </div>		
			<div id="a2"
				style="top: 300; width: 300; height: 300; background-color: green;">
				aaa
			</div>
            <div id="a3"
                style="height: 200; ">
                aaa
            </div>			
		</div>

 

Ext.onReady(function() {
	var _panel = new Ext.Panel({
				title : "登录",
				frame : true,
				width : 260,
				height : 130,
				layout : "form",
				labelWidth : 45,
                defaults:{xtype:"textfield",width:180},
                items:[{fieldLabel : "帐号"},{fieldLabel : "密码"}],
                buttons:[{text:"确定"},{text : "取消"}]
                
			});
	// _panel.applyToMarkup("a2");
	_panel.render("a2");
		// _panel.applyToMarkup();
	});

  

 

4. Ext.Window

 

 title: 窗体名称

 minimizable: 是否显示最小化

 maximizable: 是否显示最大化

closable: 销毁对象

 

show 方法

hide

 

hide事件

show

close

 

Ext.onReady(function() {
			var _window = new Ext.Window({
						title : "登录",
						frame : true,
						width : 260,
						height : 130,
						layout : "form",
						plain : true,
						resizable : false,
						bodyStyle : "padding:3px",
						labelWidth : 45,
						minimizable : false,
						maximizable : false,
						closable : true,
						closeAction : "hide",
						buttonAlign : "left",
						defaults : {
							xtype : "textfield",
							width : 180
						},
						items : [{
									fieldLabel : "帐号"
								}, {
									fieldLabel : "密码"
								}],
						buttons : [{
									text : "确定"
								}, {
									text : "取消",
									handler : function() {
										_window.hide();
									}
								}],
						listeners : {
							"show" : function() {
								alert("aaaaa");
							},
							"close" : function() {
								alert("closed!");
							}
						}

					});
			_window.show();
		});

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    extjs入门到精通

    extjs入门到精通,实例有简单到复杂,还有综合实力,下载即可运行,环境也是配好的,希望对你有帮助!

    Ext 从入门到精通

    Ext 从入门到精通 很好的学习资料,内容,丰富诙谐幽默。 正在想学习Ext的童靴们赶快下吧~~

    ExtJS入门教程(超级详细).pdf

    ExtJS入门教程(超级详细).pdf

    ExtJS入门教程(超级详细)

    在ExtJS入门教程中,首先需要掌握的是如何获取ExtJS库文件。用户可以通过ExtJS官方网站提供的下载链接获取到最新的ExtJS库文件,下载的文件是一个压缩包,解压后可以看到包含的文件和目录。其中主要的文件包括...

    ext从入门到精通

    《EXT从入门到精通》是针对想要深入了解和掌握EXTJS框架的开发者们设计的一本全面指南。本书旨在通过详尽的讲解和丰富的实践案例,帮助读者从基础开始,逐步建立起对EXTJS框架的深入理解与应用能力。 ### EXTJS概述...

    EXT从入门到精通(经典教程)

    学习ExtJS需要遵循从入门到精通的过程,即先从基础组件开始学习,逐步深入了解布局管理、数据处理、事件管理、模块化开发等高级主题。 ExtJS是独立于后端技术的前端框架。这意味着它不依赖于任何特定的服务器端语言...

    EXTJS入门详细教程

    extjs技术,从入门到精通,详细教程。

    基础到实战ExtJs全程精通培

    本课程《基础到实战ExtJs全程精通培训》旨在将学员从基础入门带入实战应用,全面掌握ExtJS的开发技能。 ExtJS提供了一套完整的UI组件库和布局管理器,使得开发者能够快速构建出具有丰富交互性的复杂Web应用界面。...

    EXTJS4.0视频教程配套代码

    非常好的EXtJS4.0视频教程及源码学习,适用于JAVA和EXTJS初学者

    ext js2.3的例子

    1. **组件化**:EXT JS使用组件模型,允许开发者通过组合各种UI组件来构建复杂的页面结构,如表格、面板、菜单、窗口、表单等。 2. **数据绑定**:EXT JS支持数据绑定,可以将数据模型与UI组件关联,实现数据的实时...

    ExtJS实用开发指南

    ExtJS基础教程,从入门到精通,包括详细的实例。

    精通JS脚本之ExtJS框架.part2.rar

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

    Ext从入门到精通

    由于富客户端技术进一步扩展浏览器功能,使之提供更加...最新版本特性,了解并掌握extjs4语法及应用,了解基于ExtJs4的最流行的富客户端框架及熟悉掌握其高级特性,并结合SSH框架与DWR实现富户端商业应用的全部开发过程

    精通JS脚本之ExtJS框架.part1.rar

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

    深入浅出Extjs教程

    从入门到精通Extjs教程。Extjs专家力作,示例丰富,理论实践并重。ajax中国,dojo中国,开源中国社区一起力荐。

    ExtJs 实例+ExtJs中文教程(学习extjs必备)

    《ExtJs中文教程》则提供了一条清晰的学习路径,让你逐步了解并精通ExtJs。教程可能包括了基础概念、组件库的详细介绍、数据管理、事件处理、布局管理等方面的内容。中文教程的优势在于,对于中文使用者来说,语言...

    Ext技术入门篇详细讲解

    3. **EXTJS框架**:压缩包中的"ExtJS.chm"和"ExtJS.chw"可能包含了EXTJS框架的官方文档,EXTJS是EXT技术的一个重要实现,它是一个完整的前端开发框架,包含了从布局管理、组件系统到数据交换等一系列功能。EXTJS的...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).doc

    初学者可以从使用记事本来开始学习 Java,这样有助于更好地理解 Java 技术的基本原理,并培养良好的编程习惯。当对 Java 有一定的了解后,可以考虑使用 Eclipse 或 NetBeans 等更为先进的开发工具。 ### Java 语言...

    Nexus入门指南(图文).

    将Nexus的WAR文件部署到Web容器中,启动容器后同样可以通过浏览器访问。 配置Nexus代理Maven中央仓库,需要在已有的Maven Central仓库的配置中修改Remote Storage Location,确保其指向正确的远程地址。同时,可以...

    extjs教程 中文

    这个教程集合包含多个资源,旨在帮助用户从入门到精通地学习ExtJS。以下是对这些文档的详细解析: 1. **《ExtJS深入浅出.doc》**:这本书可能是针对初学者和有一定基础的开发者,通过深入浅出的方式讲解ExtJS的基础...

Global site tag (gtag.js) - Google Analytics