自由时飞扬

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  8 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

2010年11月26日 #

示例代码:

Ext.onReady(function(){
	var _panel = new Ext.Panel({
		title:"用户登陆",
		frame:true,
		width:250,
		height:130,
		layout:"form",
		labelWidth:45,
		defaults:{xtype:"textfield",width:160},
		items:[
			{fieldLabel:"账号"},
			{fieldLabel:"密码"}
			],
		buttons:[
		{text:"确定"},
		{text:"取消"}
		]
	});
	
	_panel.applyToMarkup(Ext.DomHelper.append(Ext.getBody(),{
								tag:"div",
								cls:"contain",
								cn:[
								{tab:"div",cls:"center"}
								]
							},true).child("div"));
	
});

效果图:

未命名

posted @ 2010-11-26 09:20 selfly 阅读(218) | 评论 (0)编辑 收藏

说明:该组件是实现窗体化开发的基础。

构造参数:

--title:窗体名称

--minimizable:是否显示最小化按钮

--maximizable:是否显示最大化按钮

方法:

--show:使得窗口显现

--hide:使得窗口隐藏

事件:

--hide:当隐藏时触发

--show:当显现时触发

 

Ext.onReady(function(){
	var _window = new Ext.Window({
		title:"用户登陆",
		frame:true,
		width:250,
		height:130,
		plain:true,
		layout:"form",
		labelWidth:45,
		resizable:false,
		constrain:true,
		closeAction:"hide",
		defaults:{xtype:"textfield",width:160},
		bodyStyle:"padding:5px;",
		listeners:{
			"show":function(){
				alert("窗口显示");
			},
			"hide":function(){
				alert("窗口隐藏");
			}
		},
		items:[
			{fieldLabel:"账号"},
			{fieldLabel:"密码"}
			],
		buttons:[
			{text:"确定"},
			{text:"取消",handler:function(){
					_window.hide();
				}
			}
		]
	});
	
	_window.render(Ext.getBody());
	_window.show();
});

其中plain属性为true时,可以强制窗体颜色各背景色变的一样。

效果图:

未命名

posted @ 2010-11-26 09:20 selfly 阅读(294) | 评论 (0)编辑 收藏

Ext.onReady(function(){
	var _window = new Ext.Window({
		title:"用户登陆",
		frame:true,
		width:250,
		height:130,
		plain:true,
		layout:"form",
		labelWidth:45,
		resizable:false,
		constrain:true,
		closeAction:"hide",
		defaults:{xtype:"textfield",width:160},
		bodyStyle:"padding:5px;",
		listeners:{
			"show":function(){
				alert("窗口显示");
			},
			"hide":function(){
				alert("窗口隐藏");
			}
		},
		items:[
			{fieldLabel:"账号"},
			{fieldLabel:"密码"}
			],
		buttons:[
			{text:"确定",handler:function(){
					var _coll = this.ownerCt.ownerCt.items;
//					alert(this.ownerCt.ownerCt.title);
					alert(_coll.first().getValue() + _coll.itemAt(1).getValue());
				}
			},
			{text:"取消",handler:function(){
					_window.hide();
				}
			}
		]
	});
	
	_window.render(Ext.getBody());
	_window.show();
});

 

当然,也可以用Ext.getCmp()来实现,效果图:

未命名

posted @ 2010-11-26 09:20 selfly 阅读(135) | 评论 (0)编辑 收藏

Ext.onReady(function(){
	var _window = new Ext.Window({
		title:"用户信息",
		frame:true,
		bodyStyle:"padding:5px",
		width:500,
		height:350,
		plain:true,
		layout:"form",
		defaultType:"textfield",
		labelWidth:60,
		items:[{
			xtype:"panel",
			baseCls:"x-plain",
//			style:"padding:5px",
			layout:"column",
			items:[{
				columnWidth:.5,
				layout:"form",
				labelWidth:60,
				defaultType:"textfield",
				defaults:{width:160},
				baseCls:"x-plain",
				items:[{
					fieldLabel:"姓名"
				},{
					fieldLabel:"年龄"				
				},{
					fieldLabel:"出生日期"				
				},{
					fieldLabel:"联系电话"				
				},{
					fieldLabel:"手机号码"				
				},{
					fieldLabel:"电子邮件"				
				},{
					fieldLabel:"性别"				
				}]
			},{
				columnWidth:.5,
				layout:"form",
				labelWidth:60,
				baseCls:"x-plain",
				items:[{
					xtype:"textfield",
					fieldLabel:"个人照片",
					width:165,
					height:180,
					inputType:"image"
				}]
			}]
		},{
			fieldLabel:"身份证号",
			width:400
		},{
			fieldLabel:"具体地址",
			width:400
		},{
			fieldLabel:"职位",
			width:400
		}],
		showLock:false,
		listeners:{
			"show":function(_window){
					if(_window["showLock"] == false){
						_window.findByType("textfield")[7].getEl().dom.src = "default.jpg";
						_window["showLock"] = true;
					}
				}
		},
		buttons:[{
			text:"确定"
		},{
			text:"取消"
		}]
	});
	
	_window.render(Ext.getBody());
	_window.show();
});

 

效果图:

未命名

posted @ 2010-11-26 09:20 selfly 阅读(196) | 评论 (0)编辑 收藏

说明:该组件替代了传统的submit,reset,button等HTML控件。

 

构造参数:

--text:按钮上显示的文字

属性:

--text:获得当前按钮上的文字

--minWidth:按钮的最小宽度

方法:

--setText:设置按钮上的名称

事件:

--click:当点击按钮时触发

 

示例,在body对象中添加一个按钮:

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

这里的Ext.getBody()跟document.body是不相同的,前者是Ext对象,后者是DOM对象,需要把Ext对象进行转换后才相等,参考如下等式所列:

document.body == Ext.getBody().dom

 

renderTo表示将当前对象所生成的HTML对象存放进指定的对象中

 

为按钮定义事件,默认为点击事件:

Ext.onReady(function(){
	new Ext.Button({
		renderTo:Ext.getBody(),
		text:"确定",
		handler:function(){
			alert("欢迎你学习ExtJS");
		}
	});
});


也可以按如下方法指定具体事件:

Ext.onReady(function(){
	new Ext.Button({
		renderTo:Ext.getBody(),
		text:"确定",
		listeners:{
			"click":function(){
				alert("欢迎你学习ExtJS");
			}
		}
	});
});

Ext.onReady(function(){
	var _btn = new Ext.Button({
		renderTo:Ext.getBody(),
		text:"确定"
	});
	_btn.on("click",function(){
		alert("欢迎学习ExtJs");
	});
});
posted @ 2010-11-26 09:19 selfly 阅读(289) | 评论 (0)编辑 收藏

说明:该组件代替了传统的text组件。

属性:

--fieldLabel:文本框的标签名称

方法:

--getValue():得到当前文本框的值

 

Ext.layout.FormLayout:只有在些布局下才能正确显示文本框的标签名,布局的宿主对象必须是

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:"姓名"
				}));
			}
		}
	});
});
posted @ 2010-11-26 09:19 selfly 阅读(322) | 评论 (0)编辑 收藏

1、支持命名空间
定义:对于类的组织定义方式
代码举例:

Ext.namespace("Ext.dojochina");


和C#里面的命名空间差不多,在Java中类似于包的概念,

Java代码对照:

package Ext.dojochina;

 

看以下代码:

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

 

上面代码定义了一个HelloWorld的空函数,等同于:

Ext.namespace("Ext.dojochina");
Ext.dojochina.HelloWorld = function(){};

 

可以用以下代码调用:

new Ext.dojochina.HelloWorld();


如果去年上面的命名空间声明行:Ext.namespace("Ext.dojochina"); 则会出错!

 

2、类实例属性

Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = Ext.emptyFn;
Ext.apply(Ext.dojochina.Person.prototype,{name:"name"});


上面的代码中,name就是Person的一个属性,Ext.apply是Ext提供的一个静态方法,主要作用是将后面一个参数赋到前面的参数对象上。

Java对照代码:

	private String name = "name";

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

可以用以下代码调用:

 

var _person = new Ext.dojochina.Person();

alert(_person.name); //这里还没有设值,因此弹出默认值name

_person.name = "selfly";

alert(_person.name); //这里已经设过值了,弹出selfly
 
 
3、类实例方法
Ext代码:
print:function(){
	alert(String.format("姓名:{0},性别{1},",this.name,this.sex));
}

Java对照代码:
	public void print(){
		System.out.println("姓名:%s,性别%s",this.name,this.sex);
	}

实例代码:

Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = Ext.emptyFn;
Ext.apply(Ext.dojochina.Person.prototype,{
		name:"",
		sex:"",
		print:function(){
			alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));
		}
	});

var _person = new Ext.dojochina.Person();
_person.name = "张三";
_person.sex = "";
_person.print();

_person.name = "王五";
_person.sex = "";
_person.print();


4、类静态方法

Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = Ext.emptyFn;

Ext.dojochina.Person.print = function(_name,_sex){
	var _person = new Ext.dojochina.Person();
	_person.name = _name;
	_person.sex = _sex;
	_person.print();
}

Ext.apply(Ext.dojochina.Person.prototype,{
		name:"",
		sex:"",
		print:function(){
			alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));
		}
	});
	
Ext.dojochina.Person.print("张三","");
Ext.dojochina.Person.print("王五","");


5、构造方法

Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = function(_cfg){
	Ext.apply(this,_cfg);
}

Ext.dojochina.Person.print = function(_name,_sex){
	var _person = new Ext.dojochina.Person({name:_name,sex:_sex});
	_person.print();
}

Ext.apply(Ext.dojochina.Person.prototype,{
		print:function(){
			alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));
		}
	});
	
Ext.dojochina.Person.print("张三","");
Ext.dojochina.Person.print("王五","");


6、支持类继承

 

Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = function(_cfg){
	Ext.apply(this,_cfg);
}

Ext.apply(Ext.dojochina.Person.prototype,{
		job:"",
		print:function(){
			alert(String.format("姓名:{0},性别:{1},角色:{2}",this.name,this.sex,this.job));
		}
	});
	
	
Ext.dojochina.Teacher = function(_cfg){
	Ext.apply(this,_cfg);
}
Ext.extend(Ext.dojochina.Teacher,Ext.dojochina.Person,{job:"老师"}); //Teacher继承Person并给job重新赋值


Ext.dojochina.Student = function(_cfg){
	Ext.apply(this,_cfg);
}
Ext.extend(Ext.dojochina.Student,Ext.dojochina.Person,{job:"学生"}); //Student继承Person并给job重新赋值
	
	
var _teacher = new Ext.dojochina.Teacher({name:"张三",sex:""});
_teacher.print();

var _student = new Ext.dojochina.Student({name:"王五",sex:""});
_student.print();


7、类实例方法重写

Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = function(_cfg){
	Ext.apply(this,_cfg);
}

Ext.apply(Ext.dojochina.Person.prototype,{
		print:function(){
			alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));
		}
	});
	
	
Ext.dojochina.Teacher = function(_cfg){
	Ext.apply(this,_cfg);
}
Ext.extend(Ext.dojochina.Teacher,Ext.dojochina.Person,{
	print:function(){
		alert(String.format("{0}是一位{1}老师",this.name,this.sex));
	}
}); //Teacher继承Person并重写print方法

var _teacher = new Ext.dojochina.Teacher({name:"张三",sex:""});
_teacher.print();


8、支持命名空间别名、类别名

Ext.namespace("Ext.dojochina");

Dc = Ext.dojochina;

Ext.dojochina.Person = function(_cfg){
	Ext.apply(this,_cfg);
}

PN = Ext.dojochina.Person;


这里把命名空间Ext.dojochina取了一个别名Dc,对于命名空间别名的命名,最好以大写字母开头,

当然小写字母也没错,但这是一个良好的编码规范。

9、支持事件队列
Ext的事件队列模式,由Ext.util.Observable类支持。
 
Ext.namespace("Ext.dojochina");
Ext.dojochina.Person = function(){
	this.addEvents(
		"namechange",
		"sexchange"
	);
}

Ext.extend(Ext.dojochina.Person,Ext.util.Observable,{
		name:"",
		sex:"",
		setName:function(_name){
			if(this.name != _name){
				this.fireEvent("namechange",this,this.name,_name);
				this.name = _name;
			}
		},
		setSex:function(_sex){
			if(this.sex != _sex){
				this.fireEvent("sexchange",this,this.sex,_sex);
				this.sex = _sex;
			}
		}
	});

	
var _person = new Ext.dojochina.Person();

_person.on("namechange",function(_person,_old,_new){
	alert("old name:"+_old+" new name:"+_new);
});

_person.on("sexchange",function(_person,_old,_new){
	alert("old sex:"+_old+" new sex:"+_new);
});

_person.on("namechange",function(_person,_old,_new){
	alert("old name2:"+_old+" new name2:"+_new);
});

_person.setName("张三");
_person.setSex("");

 
 
 
 
 
 
 
 
 
posted @ 2010-11-26 09:17 selfly 阅读(122) | 评论 (0)编辑 收藏

想要使用ExtJS,需要在页面引入如下文件:

	<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">
	
	<script type="text/javascript" src="ext/ext-base.js"></script>
	<script type="text/javascript" src="ext/ext-all.js"></script>
	<script type="text/javascript" src="ext/ext-lang-zh_CN.js"></script>

 

 
 
其中上面的为ExtJS的样式文件,ExtJS漂亮的外观均来自于该样式,下面三个为Ext的JS文件,最后一个为ExtJS的简体中文资源文件,
上面两个包含了ExtJS的所有功能,如果不是对ExtJS有深入研究,不是超级用户的话,个人推荐直接引入这两个文件即可,需要注意前后引入的顺序!
 
 
 

posted @ 2010-11-26 09:04 selfly 阅读(177) | 评论 (0)编辑 收藏